繁体   English   中英

在GSON中将JSON列表转换为不同的Java对象

[英]Converting JSON list as different Java Objects in GSON

我有以下json字符串:

[
    {
        "question" : {
            "questionId" : 1109,
            "courseId" : 419
        },
        "tags" : ["PPAP", "testtest"],
        "choices" : [{
                "choiceId" : 0,
                "questionId" : 0
            }, {
                "choiceId" : 0,
                "questionId" : 0
            }
        ]
    }
]

如何使用GSON将问题,标签和选择放入单独的对象中? 当前,我仅使用fromJson并且仅在包含一种类型的对象的情况下才能转换JSON字符串。

您可以参加以下课程

class Question{
   questionId; //specify data type 
   courseId;
}
class Choice{
   choiceId;
   questionId;
}

然后,您可以再定义一个类,该类将容纳所有三个成员变量

class Extract{
 Question question;
 List<String> tags;
 List<Choice> choices;
} 

然后,您可以将此Extract类传递给fromJson方法,例如

List<Extract> result = gson.fromJson(jsonString, new TypeToken<List<Extract>>(){}.getType());

这对我来说与定义的POJO类一起工作。

public static void main(String[] args) {
String jsonString = "[{\"question\":{\"questionId\":1109,\"courseId\":419},\"tags\":[\"PPAP\",\"testtest\"],\"choices\":[{\"choiceId\":0,\"questionId\":0},{\"choiceId\":0,\"questionId\":0}]}]";
        Gson gson = new Gson();

        JsonParser parser = new JsonParser();
        JsonArray array = parser.parse(jsonString).getAsJsonArray();

        for (final JsonElement json : array) {
            JsonModel jsonModel = gson.fromJson(json, new TypeToken<JsonModel>() {
            }.getType());
            System.out.println(jsonModel.toString());
        }

}
public class JsonModel implements Serializable {

    private static final long serialVersionUID = -2255013835370141266L;
    private List<Choices> choices;
    private List<String> tags;
    private Question question;
    ...    
    getters and setters
  }

public class Choices implements Serializable{

    private static final long serialVersionUID = 3947337014862847527L;

    private Integer choiceId;
    private Integer questionId;
    ...    
    getters and setters
}

public class Question implements Serializable{

    private static final long serialVersionUID = -8649775972572186614L;

    private Integer questionId;
    private Integer courseId;
    ...    
    getters and setters
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM