有这样一种场景
需要解析json数据,json数据是一个对象数组,对象是一个图层,但是图层分为点,线,面三种图层,三种图层中有一部分属性是相同的,比如id,name...,其他的属性是不同的,比如type,style...,所以我不能定义成一个图层对象去解析不太好,我应该怎样做比较好呢?
我用的是Retrofit+Gson
有这样一种场景
需要解析json数据,json数据是一个对象数组,对象是一个图层,但是图层分为点,线,面三种图层,三种图层中有一部分属性是相同的,比如id,name...,其他的属性是不同的,比如type,style...,所以我不能定义成一个图层对象去解析不太好,我应该怎样做比较好呢?
我用的是Retrofit+Gson
参考一下这个:Java Gson - Convert json to a java object tree,这样会得到最基本的 JsonElement
对象,根据 isJsonObject()
判断并通过 getAsJsonOjbect()
可以得到 JsonObject
对象,这时候就可以通过类似 jo.get("type").getAsString()
这样的方式来得到一些关键特性属性,确定对象类型,最后通过 <T>T Gson.fromJson(JsonElement, Type)
方法来得到实体对象。
当然,这里的关键是那个特征属性。你可以考虑在基类中加入一个 type
属性来识别,子类构建的时候按子类类型对其赋值。
8 回答6.5k 阅读
4 回答697 阅读✓ 已解决
2 回答3.4k 阅读
3 回答1.9k 阅读✓ 已解决
1 回答2.2k 阅读✓ 已解决
2 回答1.5k 阅读✓ 已解决
1 回答2.1k 阅读✓ 已解决
可以把公用的字段提取出来,不一样的写成一个json的string塞在一个字段里面,先解析共有的,再根据type,解析那个json