GSON解析没有很多类
我有以下JSON,我只对获取元素"status"
, "lat"
和"lng"
感兴趣。
使用Gson ,是否可以解析此JSON以获取这些值而无需创建表示JSON内容的整个类结构?
JSON:
{ "result": { "geometry": { "location": { "lat": 45.80355369999999, "lng": 15.9363229 } } }, "status": "OK" }
您不需要定义任何新类,只需使用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);
干净利落。 如果您发现自己一遍又一遍地重复相同的代码,那么您可以创建类来简化映射并消除重复。
确实可以,但您必须创建自定义反序列化器 。 有关详细信息,请参阅此处的 Gson文档和Gson API Javadoc。 还要看看我在这里和这里的其他反应 ……如果你还有疑问,请评论。
也就是说,在我看来,你更容易解析它创建相应的类,更考虑到你的JSON响应的简单性……用通常的方法你只需要编写一些超级简单的类,但是编写一个自定义反序列化程序虽然并不复杂,但它可能会花费更长的时间,如果以后你需要一些JSON数据,它将更难以适应…
Gson有一种专为开发人员设计的操作方式,而不是试图找到变通方法!
无论如何,你为什么不想使用课程? 如果你不喜欢在你的项目中有很多类,你可以使用嵌套类,你的项目看起来更干净……