业务模块从php迁移到golang下了,最近遇到一个golang下json解析的问题:请求接口,按返回包字段判断请求成功与否。伪代码如下:packagemainimport("encoding/json""fmt")typeResponsestruct{Codeint`json:"code"`Msgstring`json:"msg"`}funcmain() {// 场景1,返回包符合接口要求str:=`{"code":100,"msg":"failed"}`varresResponsejson.Unmarshal([]byte(str),&res;)fmt.Printf("res=%+v\n",res)// 解析正确,符合预期// res={Code:100 Msg:failed}// 场景2,返回包不符合接口要求,缺少相关字段str=`{"retCode":100,"retMsg":"failed"}`varres1Responsejson.Unmarshal([]byte(str),&res1;)fmt.Printf("res=%+v\n",res1)// 解析错误,不符合预期// res={Code:0 Msg:}}这里由于接口地址配置错误,导致请求到其他接口,返回包不符合协议要求。缺少code字段,Unmarshal解析后,按默认值处理,所以code为0,导致验证出错。修正
...
继续阅读
(7)