Golang解析json的幾種方法


Golang解析json的幾種方法

概要

使用Golang調用其它平台API接口時總會被多層的json串給惡心到,我記錄一下自己解析json的幾種方法。

一、自帶的json包

func JsonUnmarshal(b []byte) {
	var s Student
	if err := json.Unmarshal(b, &s); err != nil {
		log.Println(err)
	}
}

二、強制類型裝換和反射

func GetItemMap(parent map[string]interface{}, key string) map[string]interface{} {
	val, ok := parent[key].(map[string]interface{})
	if ok {
		return val
	} else {
		return nil
	}
}
func GetItemString(parent map[string]interface{}, key string) string {
	val, ok := parent[key].(string)
	if ok {
		return val
	}
	return ""
}
我只展示了部分函數,大概的想法都差不多,只需將原有的[]byte轉為map[string]interface{}類型,然后使用這些函數即可。

使用mapstructure

func MapStruct(b []byte) {
	var s Student
	var tmp map[string]interface{}
	
	json.Unmarshal(b, &tmp)
	err := mapstructure.Decode(tmp, &s)
	if err != nil {
		fmt.Println(err)
	}
}

總結

最常用是二、三兩種方式結合使用,將json串中所需要的那一解析出來,然后使用mapsruct來操作


免責聲明!

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



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