流动

Recent content on 流动

马上订阅 流动 RSS 更新: https://liudon.com/index.xml

Golang解析json的一个问题

2022年5月20日 21:18

业务模块从php迁移到golang下了,最近遇到一个golang下json解析的问题:

请求接口,按返回包字段判断请求成功与否。

伪代码如下:

package main

import (
	"encoding/json"
	"fmt"
)

type Response struct {
	Code int    `json:"code"`
	Msg  string `json:"msg"`
}

func main() {
	// 场景1,返回包符合接口要求
	str := `{"code":100,"msg":"failed"}`
	var res Response
	json.Unmarshal([]byte(str), &res)
	fmt.Printf("res=%+v\n", res)
    // 解析正确,符合预期
	// res={Code:100 Msg:failed}

	// 场景2,返回包不符合接口要求,缺少相关字段
	str = `{"retCode":100,"retMsg":"failed"}`
	var res1 Response
	json.Unmarshal([]byte(str), &res1)
	fmt.Printf("res=%+v\n", res1)
    // 解析错误,不符合预期
	// res={Code:0 Msg:}
}

这里由于接口地址配置错误,导致请求到其他接口,返回包不符合协议要求。