The following is the JSON file I'm trying to parse (OpenWeatherMap API if anyone is curious). The builtin encoding/json
does a pretty good job of it. When I use json.Unmarshal(testJson, &parsed)
, most of the JSON file is parsed correctly. However, with the way that it is formatted, the "weather" is giving me a headache.
I parsed the file generated by encoding/json
with parsedMap := parsed.(map[string]interface{})
, which works when I try to refer to key,value pair with the key "main".
With fmt.Println()
, the value is map[temp:280.32 pressure:1012 humidity:81 temp_min:279.15 temp_max:281.15]
, which I can work with.
With the key "weather" however, I get this [map[icon:09d id:300 main:Drizzle description:light intensity drizzle]]
. The additional square brackets seem to be causing issues.
{
"coord": {
"lon": -0.13,
"lat": 51.51
},
"weather": [
{
"id": 300,
"main": "Drizzle",
"description": "light intensity drizzle",
"icon": "09d"
}
],
"base": "stations",
"main": {
"temp": 280.32,
"pressure": 1012,
"humidity": 81,
"temp_min": 279.15,
"temp_max": 281.15
},
"visibility": 10000,
"wind": {
"speed": 4.1,
"deg": 80
},
"clouds": {
"all": 90
},
"dt": 1485789600,
"sys": {
"type": 1,
"id": 5091,
"message": 0.0103,
"country": "GB",
"sunrise": 1485762037,
"sunset": 1485794875
},
"id": 2643743,
"name": "London",
"cod": 200
}
Code for reference:
var testJSON = //JSON EARLIER IN THE POST var parsed interface{}
json.Unmarshal(testJSON, &parsed)
parsedMap := parsed.(map[string]interface{})
mainTemp := parsedMap["weather"]
fmt.Println(mainTemp)