大家是怎么处理结构不固定的数据(JSON格式的)

dmwin72015 · · 2379 次点击 · 开始浏览    置顶
这是一个创建于 的主题,其中的信息可能已经有所发展或是发生改变。

### 场景一: 自己的接口, 格式可能为 ```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来接收获取,就比较简单了, 不知道大家有没有其他更好的方式,求分享!!谢谢🙏

有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

2379 次点击  ∙  1 赞  
加入收藏 微博
2 回复  |  直到 2023-02-20 15:52:29
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传