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