go語言怎么從(json后的)多層map中取值


// 一個PHP中的多層關聯數組,即Go中的多層map,如何從json字符串中解析,然后取到map中的某個具體的值。
// 數據結構如下:
cityInfo := "{
"status": 0,
"result": {
"location": {
"lat": 39.88,
"lng": 118.69
},
"address": "河北省唐山市遷安市京哈高速公路",
"address_component": {
"nation": "中國",
"province": "河北省",
"city": "唐山市",
"district": "遷安市",
"street": "京哈高速公路",
"street_number": "京哈高速公路"
},
}
}"
// 我們這里取 cityInfo["result"]["address_component"]["district"] 這個值,即: 遷安市

// 我們使用的數據為json后的map, 內容與上面展示的完全相同,所以需要先從json解析到map
        cityInfo := "{\"status\": 0,\"result\": {\"location\": {\"lat\": 39.88,\"lng\": 118.69},\"address\": \"河北省唐山市遷安市京哈高速公路\",\"address_component\": {\"nation\": \"中國\",\"province\": \"河北省\",\"city\": \"唐山市\",\"district\": \"遷安市\",\"street\": \"京哈高速公路\",\"street_number\": \"京哈高速公路\"}}}"
	fmt.Println(cityInfo)
	cityInfoMap := util.JSONToMap(cityInfo)
	fmt.Println(cityInfoMap)
	cityName, ok := cityInfoMap["result"].(map[string]interface{})["address_component"].(map[string]interface{})["district"]
	fmt.Println(cityName)   // 這里會輸出遷安市, 取到對應的值,OK

// 上述代碼中util.JSONToMap()方法的代碼如下, 隨便放到一個package中,然后引用即可,此處我放入到util包中。


// json轉Map ()
func JSONToMap(str string) map[string]interface{} {

	var tempMap = make(map[string]interface{})

	err := json.Unmarshal([]byte(str), &tempMap)

	if err != nil {
		panic(err)
	}

	return tempMap
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM