使用Gson从Main Json String获取内部Json字符串数据

时间:2014-03-21 10:21:11

标签: java json string gson

我使用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;
    }
}

2 个答案:

答案 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类。根据提示设计你的课程。