【发布时间】:2014-03-21 10:21:10
【问题描述】:
我正在使用Gson 来解析来自 Json 字符串的数据。一切正常。
但是现在,Main Json String 包含内部 Json 字符串,我想要内部 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();
在这里,我完美地获得了 Question 价值,但不知道如何获得 Options 价值。如果我使用相同的方法,那么它会给出错误: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;
}
}
【问题讨论】:
-
请为您的 PriamryTest 类添加代码(它的实例应该从 json 字符串中反序列化)
-
@ShmilTheCat,查看更新后的帖子。
-
"Options" 位于数组内的对象内。访问数组元素(List)得到对象(Map),然后提取“Options”,这将是一个对象(Map)。您不能将其提取为字符串。如果您想要一个字符串,请通过 JSON 编码器运行对象/映射。 (为此烦恼 POJO 是愚蠢的——它们只会碍事。)
-
@HotLicks,你能给我举个例子吗?
-
您的意思是为您编写代码?我在上面清楚地描述了它。
List list = parse(jsonString); Map map1 = list[0]; Map map2 = map1.get("Options"); String innerJson = serialize(map2);只需替换您选择的解析器使用的方法和类型。