GSON解析没有很多类

时间:2013-05-16 19:08:56

标签: java json parsing gson

我有以下JSON,我只对获取元素"status""lat""lng"感兴趣。

使用 Gson ,是否可以解析此JSON以获取这些值而无需创建表示JSON内容的整个类结构?

JSON:

{
  "result": {
    "geometry": {
      "location": {
        "lat": 45.80355369999999,
        "lng": 15.9363229
      }
    }
  },
  "status": "OK"
}

2 个答案:

答案 0 :(得分:42)

您不需要定义任何新类,只需使用Gson库附带的JSON对象即可。下面是一个简单的例子:

JsonParser parser = new JsonParser();
JsonObject rootObj = parser.parse(json).getAsJsonObject();
JsonObject locObj = rootObj.getAsJsonObject("result")
    .getAsJsonObject("geometry").getAsJsonObject("location");

String status = rootObj.get("status").getAsString();
String lat = locObj.get("lat").getAsString();
String lng = locObj.get("lng").getAsString();

System.out.printf("Status: %s, Latitude: %s, Longitude: %s\n", status,
        lat, lng);

简单明了。如果你发现自己反复重复相同的代码,那么你可以创建类来简化映射并消除重复。

答案 1 :(得分:6)

确实可以,但您必须创建自定义反序列化程序。有关详细信息,请参阅Gson文档here和Gson API Javadoc here。还要看看我的其他反应herehere ......如果你还有疑问,请发表评论。

那就是说,在我看来,你更容易解析它创建相应的类,更考虑到你的JSON响应的简单性......用通常的方法你只需要写一些超级简单的但是,编写自定义反序列化程序的类虽然不是那么复杂,但它可能需要更长的时间,如果以后需要一些JSON的数据,将会更难以适应...

Gson有一种专为开发人员设计的操作方式,而不是试图找到解决方法!

无论如何,为什么你不想使用课程?如果你不喜欢在你的项目中有很多类,你可以只使用嵌套类,你的项目看起来更干净......