### 场景一:
自己的接口, 格式可能为
```json
{
code:0,
data: "任意格式",
message:"success",
}
```
这种情况下,由于是自己的数据可控,弄一个通用的结构体, 通用的方法能解决
``` go
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`:
```golang
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` 来解析数据,
```golang
type Response struct {
Code int
Data map[string]any
Message string
}
```
这种就是直接用map来接收获取,就比较简单了,
不知道大家有没有其他更好的方式,求分享!!谢谢🙏
有疑问加站长微信联系(非本文作者)