json解析问题

有这样一种场景
需要解析json数据,json数据是一个对象数组,对象是一个图层,但是图层分为点,线,面三种图层,三种图层中有一部分属性是相同的,比如id,name...,其他的属性是不同的,比如type,style...,所以我不能定义成一个图层对象去解析不太好,我应该怎样做比较好呢?
我用的是Retrofit+Gson

阅读 3.6k
4 个回答

可以把公用的字段提取出来,不一样的写成一个json的string塞在一个字段里面,先解析共有的,再根据type,解析那个json

把所有属性包含,组成一个新对象,用于解析。使用的时候再根据特有属性把对象区分开来。

参考一下这个:Java Gson - Convert json to a java object tree,这样会得到最基本的 JsonElement 对象,根据 isJsonObject() 判断并通过 getAsJsonOjbect() 可以得到 JsonObject 对象,这时候就可以通过类似 jo.get("type").getAsString() 这样的方式来得到一些关键特性属性,确定对象类型,最后通过 <T>T Gson.fromJson(JsonElement, Type) 方法来得到实体对象。

当然,这里的关键是那个特征属性。你可以考虑在基类中加入一个 type 属性来识别,子类构建的时候按子类类型对其赋值。

使用Android Studio插件 GsonFormat,一键生成实体类。
其实很多网站也有在线生成的服务 比如
bejson的服务

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题