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来操作

你可能感兴趣的:(Golang解析json的几种方法)