GO--go的json解析的两种法及注意事项

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

暂时,学习到了这两种方法,欢迎大家来补充和指正

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值