gpt4 book ai didi

java - 对类进行建模以表示 JSON 数据的原因是什么?我需要这样做吗?

转载 作者:行者123 更新时间:2023-12-01 06:13:26 26 4
gpt4 key购买 nike

我在 StackOverflow 上遇到了这个问题,询问 converting JSON to Java.答案表明另一个类被建模来表示 JSON 数据以及正在创建的对象,我不明白为什么。

该对象现在包含 Gson 读取内容后的所有信息还是仅包含一个键/值对?如果它只包含 1 个键/值对,我假设我需要为下面的 JSON 创建多个对象,我可以使用循环来迭代并将值添加到下拉菜单?

{
"1": "Annie",
"2": "Olaf",
"3": "Galio",
"4": "TwistedFate",
"5": "XinZhao",
"6": "Urgot",
"7": "Leblanc",
"8": "Vladimir",
"9": "FiddleSticks",
"10": "Kayle",
"11": "MasterYi",
"12": "Alistar",
"13": "Ryze",
"14": "Sion",
"15": "Sivir",
"16": "Soraka",
"17": "Teemo",
"18": "Tristana",
"19": "Warwick",
"20": "Nunu"
}

本质上我的目标是:

1) 创建具有值的名称列表。

2)按字母顺序对名称列表(未排序)进行排序

3) 循环列表并将每个名称添加到下拉菜单

4) 当选择下拉菜单中的名称时,与该值关联的键将传递到另一个接收更多数据的 URL。

如果不清楚,我们深表歉意。我花了几个小时试图了解如何从 JSON 获取元素并显示它,并尝试创建一个列表,在其中我可以使用键来显示名称信息,但除了使用 for 之外没有运气-每个循环。

最佳答案

让我们使用 Jackson 的功能,该功能允许您将任何属性映射到单个方法(我相信您在这里并不真正需要 getter)。只需交换此通用 setter 中的键和值,然后添加到已按键(名称)排序的 TreeMap 中。然后您可以按字母顺序输出键(名称)并轻松通过名称获取 ID。

public static void main(String[] args) throws IOException {

String json = "....."; // your JSON string here

com.fasterxml.jackson.databind.ObjectMapper mapper =
new com.fasterxml.jackson.databind.ObjectMapper();
ReverseMap pairs = mapper.readValue(json, ReverseMap.class);
for (Map.Entry<Object, String> entry : pairs.getValues().entrySet()) {
System.out.println(entry.getKey() + ":" + entry.getValue());
}
}

public class ReverseMap {

private TreeMap<Object, String> mapping = new TreeMap<>();

@com.fasterxml.jackson.annotation.JsonAnySetter
public void add(String name, Object value) {
mapping.put(value, name);
}

public Map<Object, String> getValues() {
return mapping;
}
}

关于java - 对类进行建模以表示 JSON 数据的原因是什么?我需要这样做吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30602882/

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