【发布时间】:2014-04-12 16:47:59
【问题描述】:
我最近开始使用 JSON 字符串,并被告知 Google 自己的库 Gson 是处理这些字符串的新方法。
我的理解是,JSON 字符串本质上是一个映射。其中每个变量都指向字符串中的一个值。
例如:
String jsonInput2 = "{\"created_at\":\"Sat Feb 08 15:37:37 +0000 2014\",\"id\":432176397474623489\"}
到目前为止,一切都很好。可以使用以下代码将诸如 JSON 字符串创建时间等信息分配给变量:
Gson gson = new Gson();
Map<String, String> map = new HashMap<String, String>();
map = (Map<String, String>) gson.fromJson(jsonInput, map.getClass());
String createdAt = map.get("created_at");
在简单的美中几乎是艺术。但这就是美丽结束的地方,我的困惑开始了。
以下是上述JSON字符串的扩展;
String jsonInput2 = "{\"created_at\":\"Sat Feb 08 15:37:37 +0000 2014\",\"id\":432176397474623489\",\"user\":{\"id_str\":\"366301747\",\"name\":\"somethingClever\",\"screen_name\":\"somethingCoolAndClever\"}}";
我的问题是这些“括号内的括号”如何用于JSON 的user 部分?
如何将这些内括号中指定的值分配给变量?
谁能给我解释一下,或者用代码告诉我Gson如何处理这样的事情,以及我如何使用它?
简而言之,为什么...
String jsonInput = "{\"created_at\":\"Sat Feb 08 15:37:37 +0000 2014\",\"id\":432176397474623489\",\"user\":{\"id_str\":\"366301747\",\"name\":\"somethingClever\",\"screen_name\":\"somethingCoolAndClever\"}}";
Gson gson = new Gson();
Map<String, String> map = new HashMap<String, String>();
map = (Map<String, String>) gson.fromJson(jsonInput, map.getClass());
String name = map.get("name");
System.out.println(name);
...打印出null?
【问题讨论】: