我有以下内容(为SO混淆)JSON:
{
"ABC" : {
"logo_1": {
"hdpi": "value",
"mdpi": "value",
"xhdpi": "value",
"xxhdpi": "value"
},
"logo_2": {
"regular": "value",
"high_res": "value",
}
},
"XYZ" : {
"logo_1": {
"hdpi": "value",
"mdpi": "value",
"xhdpi": "value",
"xxhdpi": "value"
},
"logo_2": {
"regular": "value",
"high_res": "value",
}
}
ABC和XYZ是地区。我们每个地区需要不同的徽标,我遇到的问题是我希望将来能够处理新的地区。因此,我不想创建如下对象:
public class EnvoyMessagesModel {
public Region ABC;
public Region XYZ;
}
我见过在Gson中使用的列表,但列表变量的名称始终是实际标签,因为“ABC”!=“XYZ”我认为这不会起作用。有没有办法获得这些区域的列表,这些区域也会知道他们的顶级标签?我想做像region.getTopLevel()这样的东西并让它返回“ABC”或“XYZ”
答案 0 :(得分:1)
假设......
...解析你可以想到的JSON最灵活的方法就是使用Map
类。类似的东西:
Type mapType =
new TypeToken<Map<String, Map<String, Map<String, String>>>>() {}.getType();
HashMap<String, HashMap<String, HashMap<String, String>>> regionsMap =
new Gson().fromJson(yourJsonString, mapType);
然后,如果你想获得所有的地区名称,你可以这样做:
Set<String> regionNames = regionsMap.keySet();
...或者如果您想要区域"regular"
的徽标"logo_2"
的值"XYZ"
,则可以执行...
String regular = regionsMap.get("XYZ").get("logo_2").get("regular");
......等等......