【发布时间】:2013-07-08 20:02:25
【问题描述】:
我正在尝试使用 GSON 解析 JSON,我想我已经掌握了窍门。我遇到的问题是它似乎在对象名称之后停止解析。
public static void main(String[] args) throws Exception {
Gson gson=new Gson();
String json = "{\"k1\":\"v1\",\"k2\":\"v2\"}";
Map<String,String> map=new HashMap<String,String>();
map=(Map<String,String>) gson.fromJson(json, map.getClass());
System.out.println(map.keySet());
}
工作正常并输出:
[k1, k2]
我可以使用这些键来获得正确的值,这正是我想要做的。
如果我对来自 json.org 的 JSON 对象使用相同的代码
{
"glossary": {
"title": "example glossary",
"GlossDiv": {
"title": "S",
"GlossList": {
"GlossEntry": {
"ID": "SGML",
"SortAs": "SGML",
"GlossTerm": "Standard Generalized Markup Language",
"Acronym": "SGML",
"Abbrev": "ISO 8879:1986",
"GlossDef": {
"para": "A meta-markup language, used to create markup languages such as DocBook.",
"GlossSeeAlso": ["GML", "XML"]
},
"GlossSee": "markup"
}
}
}
}
}
我得到的唯一输出是
[词汇表]
我觉得我缺少一些明显的东西,有人可以帮我指出正确的方向吗?
谢谢。
【问题讨论】:
-
第二个 JSON 对象相当复杂。你期待什么输出?
-
您的第二个对象只有一个键 (
glossary) 和该键的一个值(包含所有其他内容的对象)。 -
我想要做的是在不知道键名的情况下获取值。因此,使用上面的第二个 json 示例,我希望能够执行类似 pseudo-code 之类的操作,然后是 ID 等,带有某种循环。 for(int i=0;i