如何parsingGSON的dynamicJSON字段?
所以我使用GSON来parsingAPI中的JSON,并坚持如何让它parsing数据中的dynamic字段。
以下是查询返回的JSON数据示例:
{ - 30655845: { id: "30655845" name: "testdata description: "" latitude: "38" longitude: "-122" altitude: "0" thumbnailURL: http://someimage.com/url.jpg distance: 9566.6344386665 } - 28688744: { id: "28688744" name: "testdata2" description: "" latitude: "38" longitude: "-122" altitude: "0" thumbnailURL: http://someimage.com/url.jpg distance: 9563.8328713012 } }
我目前处理单个静态值的方法是使用一个类:
import com.google.gson.annotations.SerializedName; public class Result { @SerializedName("id") public int id; @SerializedName("name") public String name; @SerializedName("description") public String description; @SerializedName("latitude") public Double latitude; @SerializedName("longitude") public Double longitude; @SerializedName("altitude") public Double altitude; @SerializedName("thumbnailURL") public String thumbnailURL; @SerializedName("distance") public Double distance; }
然后我可以简单地使用GSON来parsing:
Gson gson = new Gson(); Reader reader = new InputStreamReader(source); Result response= gson.fromJson(reader, Result.class);
我知道这对子数据有效,因为我可以查询并获取单个条目并进行相当简单的parsing,但是对于数组中的每个值给出的随机整数值呢? (即30655845和2868874)
任何帮助?
根据GSON文档,您可以执行如下操作:
Type mapType = new TypeToken<Map<Integer, Result> >() {}.getType(); // define generic type Map<Integer, Result> result= gson.fromJson(new InputStreamReader(source), mapType);
或者您可以尝试为您的课程编写自定义序列化程序。
免责声明:我也没有GSon的经验,但与其他框架,如jackson。