如何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。