场景一:
自己的接口, 格式可能为
{
code:0,
data: "任意格式",
message:"success",
}
这种情况下,由于是自己的数据可控,弄一个通用的结构体, 通用的方法能解决
type Response struct {
Code int
Data any
Message string
}
func JSONResponse(code int, data any, message string) Response {
return Response {
Code: code,
Data: data,
Message: message,
}
}
JSONResponse(0, []int{1,2,3}, "")
JSONResponse(0, map[string]string{"name":"张三"}, "")
场景二:
如果要解析别人的接口, 由于data格式不固定,有什么比较便捷的方式,能解析data
目前想到的的方法一, 两次 Unmarshal
:
type Response struct {
Code int
Data json.RawMessage
Message string
}
// 假设一种数据格式
type DataType struct {
ID string
Name string
}
data := []byte{} // 假设是其他地方返回的数据
var msg = Response{}
json.Unmarshal(data, &Response)
var data2 = DataType{}
err = json.Unmarshal(msg.Data, &data2)
方法2:
使用 map[string]any
来解析数据,
type Response struct {
Code int
Data map[string]any
Message string
}
这种就是直接用map来接收获取,就比较简单了,
不知道大家有没有其他更好的方式,求分享!!谢谢🙏