私は以下のjsonコードを持っています。Javaでネストされたマップを取得する
{
"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を例外で得る。
{
"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をもう一度呼びますか?今回はString(Json Stringではありません)で呼び出しています。 –
@SachinGupta、これは私が立ち往生しているところです...出力からその 'temp 'を得る方法がわからない – user3872094