GO--go的json解析的两种法及注意事项
最近打算用go来写项目,随便来学习下大家都认可的这门语言,谨做一些学习记录
package main
import (
"encoding/json"
"fmt"
)
//这里需要在注意 结构体里的key首字母必须大写,而且除首字母之外key的其余部分需要和json中的key保持一致
type Origin struct{
First_key string
}
type Result struct {
SecondKey string
}
type Ret struct {
Origin Origin `json:origin`
Result Result `json:result`
}
//解析json学习记录
func main() {
str := "{\"origin\":{\"first_key\":\"11111\"},\"result\":{\"secondKey\":\"123\"}}"
//第一种方法声明完整的json格式然后解析
fmt.Println(str)
ret := Ret{}
json.Unmarshal([]byte(str), &ret)
fmt.Println(ret.Origin)
fmt.Println(ret.Result.SecondKey)
//第二种方法通过通用类型来处理接收结果但是得多次处理结果才能获得想要的数据
//而且使用了断言,不建议使用这种方法
ret1 := map[string]interface{}{}
json.Unmarshal([]byte(str), &ret1)
fmt.Println(ret1)
for k, v := range ret1 {
fmt.Println(k, v)
for sK , sV := range v.(map[string]interface{}) {
fmt.Println(sK, sV)
}
}
}
运行结果
{"origin":{"first_key":"11111"},"result":{"secondKey":"123"}}
{11111}
123
map[origin:map[first_key:11111] result:map[secondKey:123]]
origin map[first_key:11111]
first_key 11111
result map[secondKey:123]
secondKey 123
暂时,学习到了这两种方法,欢迎大家来补充和指正