android go解析json,GoLand Json 解析

看个例子:

这里定义了一个解析结构体

type Response struct {

code int64

msg string

data string

}

执行json解析

func main() {

var resp Response

err:=json.Unmarshal([]byte(` {"code":200,"msg":"success","data":"Macbook Pro 2018 款"}`),&resp)

if err !=nil {

return

}else {

fmt.Println(resp)

}

}

04fbe87e40c91de24943b08986c045ac.png

image.png

然而json数据并没有成功解析到变量resp 中 ,为什么会这样呢?

刚刚说到了 GoLand是以字母大小写来限定访问域的 只有首字母大写才可以被导出(可以理解为 public ),子现在我们把 Response 改成这样 ,首字母大写 ,再来看看结果

type Response struct {

Code int64

Msg string

Data string

}

31c11ba7b88b18029b31d56e2a89d779.png

image.png

5129e2b61089efe80a4f0382d70ef3bc.png

image.png

json数据成功解析了出来

这里有人可能注意到了 ,sutruct 里面的字段 和 json 字符串中的字段并不一致 。这里就是 GoLang json解析包 自动匹配的结果了(这里的自动匹配 是指不区分大小 ,但是字母还是要一样的),不信我们试试

这里我把字符串对应的字段 改成了这样

9a3a407797f4dc56a295c3916a8d05f1.png

image.png

运行 结果

ab922b97d2786f2b7280184e37c7fb97.png

image.png

那json 字段是否可以不合struct 字段匹配呢? 当然也是可以的。

可以通过tag 指定 映射字段。

修改一下结构体:

type Response struct {

Code int64 `json:"status"`

Msg string `json:"message"`

Data string `json:"data"`

}

修改json 数据:

5e98692cbd1321e0987c6693b48fbd15.png

image.png

最后也是可以成功解析的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值