gpt4 book ai didi

java - 在 Java 中获取嵌套映射

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

我有以下 json 代码。

{
"main": {
"temp": 301.335,
"pressure": 951.08,
"humidity": 45,
"temp_min": 301.335,
"temp_max": 301.335,
"sea_level": 1025.43,
"grnd_level": 951.08
}
}

我正在使用下面的 java 代码来获取此数据。

上面的 json 存储在字符串 text 中。

            System.out.println(text);

ObjectMapper mapper = new ObjectMapper();

// read JSON from a file
Map<String, Object> map = mapper.readValue(text, new TypeReference<Map<String, Object>>() {
});

System.out.println(map.get("main"));

Map<String, Object> mapIn = mapper.readValue(map.get("main").toString(),
new TypeReference<Map<String, Object>>() {
});

System.out.println(mapIn);

在这里,我想在控制台中打印 temp 值。但到目前为止,我得到了以下 o/p,但有异常(exception)。

{
"coord": {
"lon": 106.85,
"lat": -6.21
},
"weather": [{
"id": 802,
"main": "Clouds",
"description": "scattered clouds",
"icon": "03d"
}],
"base": "stations",
"main": {
"temp": 304.15,
"pressure": 1007,
"humidity": 62,
"temp_min": 304.15,
"temp_max": 304.15
},
"visibility": 8000,
"wind": {
"speed": 3.1,
"deg": 320
},
"clouds": {
"all": 40
},
"dt": 1478244600,
"sys": {
"type": 1,
"id": 8043,
"message": 0.0084,
"country": "ID",
"sunrise": 1478211943,
"sunset": 1478256397
},
"id": 1642911,
"name": "Jakarta",
"cod": 200
} {
temp = 304.15, pressure = 1007, humidity = 62, temp_min = 304.15, temp_max = 304.15
}
Exception in thread "main"
java.lang.ClassCastException: java.util.LinkedHashMap cannot be cast to java.lang.String
at Jackson2Example.main(Jackson2Example.java: 51)

请让我知道哪里出了问题,如何解决这个问题并获取 temp 值。

谢谢

最佳答案

您无需再次调用mapper.readValue。试试这个:

Map<String, Object> map = mapper.readValue(text, new TypeReference<Map<String, Object>>() {
});


Map<String, Object> mainMap = (Map<String, Object>) map.get("main");

System.out.println(mainMap.get("temp"));

关于java - 在 Java 中获取嵌套映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40417962/

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