我使用Gson
来解析Json String中的数据。一切都很好。
但现在,Main Json String
包含Inner Json String,我想要内部Json String
的数据。如何获得?
检查我的Json String
:
[{"Question":"Are you inclined to:","QId":"2","Options":[{"Option":"Argue or debate issues","OptionId":"4"},{"Option":"Avoid arguments","OptionId":"5"},{"Option":"Swutch topics","OptionId":"6"}]}]
在这里,我想要"选项"的价值。
我的示例代码如下:
PrimaryTest[] testlist = gson.fromJson(result, PrimaryTest[].class); // result is Json String.
List<PrimaryTest> lstTest = Arrays.asList(testlist);
PrimaryTest objTest = lstTest.get(0);
String Question = objTest.getQuestion();
在这里,我完全得到了问题值但不知道如何获得选项值。如果我使用相同的方法,则表示错误:Invalid Json Data
。
PrimaryTest.java代码:
public class PrimaryTest {
private String Question;
public PrimaryTest(String Question) {
this.Question = Question;
}
public void setQuestion(String Question) {
this.Question = Question;
}
public String getQuestion() {
return this.Question;
}
}
答案 0 :(得分:1)
编写包含JSON字符串所包含参数的类,以便直接将字符串解析为类对象
您的PrimaryTest
课程应包含以下成员:
public class PrimaryTest {
private String Question;
private int QId;
private List<Option> Options;
//Getter and Setter methods here
}
您的Option
类包含如下所示的成员:
public class Option{
private String Option;
private int OptionId;
// Getter and Setter methods
}
现在将您的JSON字符串解析为PrimaryTest
类,并从getter方法获取您的Options
列表。
以下是测试代码:
PrimaryTest[] response = gson.fromJson(json, PrimaryTest[].class);
List<PrimaryTest> lstTest = Arrays.asList(response);
PrimaryTest objTest = lstTest.get(0);
List<Option> options = objTest.getOptions();
for(Option option : options){
System.out.println(option.getOption());
}
答案 1 :(得分:0)
提示对象的方式。
OptionClass{
String Option
int/long OptionId
}
QuestionClass{
String Question
int/long QId
Collection<OptionClass> Options
}
注意:这不是java类。根据提示设计你的课程。