gpt4 book ai didi

java - 阅读 GSON 以获取顶级标签列表

转载 作者:行者123 更新时间:2023-11-30 11:12:11 25 4
gpt4 key购买 nike

我有以下(为 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”

最佳答案

假设...

  • 地区名称各不相同。
  • 给定地区的 Logo 名称都不同。
  • 在给定的标志中标志的属性名称都是不同的。

...我能想到的最灵活的解析 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();

... 或者如果您想要区域 "XYZ" 的 Logo "logo_2" 的值 "regular",您可以做...

String regular = regionsMap.get("XYZ").get("logo_2").get("regular");

...等等...

关于java - 阅读 GSON 以获取顶级标签列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27027933/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com