跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • 请教一个有关 gin 返回包含未知属性的嵌套 JSON 的问题
未分類
14 5 月 2020

请教一个有关 gin 返回包含未知属性的嵌套 JSON 的问题

请教一个有关 gin 返回包含未知属性的嵌套 JSON 的问题

資深大佬 : JustSong 5

如题,现在我们要返回这样的一个 JSON:

c.JSON( http.StatusOK, gin.H{     "message": "ok",     "data":    data.Data, }) 

其中 data.Data 是一个 JSON 字符串,例如:"{rn "name": "smzddddddddddddddd",rn "age": 66666666666rn}"

现在我们得到的返回是这样的:

{     "data": "{rn  "name": "smzddddddddddddddd",rn  "age": 66666666666rn}",     "message": "ok" } 

而我想得到这样的:

{     "data": {      "name":"smzddddddddddddddd",         "age":66666666666     },     "message": "ok" } 

难点在于 data 的属性是完全未知的,我已经尝试搜索过 gin return nested json 相关的信息,但是好像都需要绑定到一个结构体,但是属性完全未知的情况下要怎么搞呢?

大佬有話說 (11)

  • 資深大佬 : insert000

    用 map

  • 資深大佬 : pubby

    data json.RawMessage

  • 資深大佬 : kaifang

    将字符串转成 map

    s := “{rn “name”: “smzddddddddddddddd”,rn “age”: 66666666666rn}”

    var m map[string]interface{}

    if err:=json.Unmarshal([]byte(s),&m);err!=nil{
    fmt.Println(err.Error())
    }

    fmt.Println(m)

  • 主 資深大佬 : JustSong

    谢谢大家,贴一下解决方案,供参考:

    “`go
    data, err := Query(path)
    var jsonData map[string]interface{}
    if err == nil {
    message := “ok”
    if data != nil {
    if e := json.Unmarshal([]byte(data.Data), &jsonData); e != nil {
    message = e.Error()
    }
    } else {
    message = “data is nil but err is not nil”
    }
    c.JSON( http.StatusOK, gin.H{
    “message”: message,
    “data”: jsonData,
    })
    } else {
    c.JSON( http.StatusInternalServerError, gin.H{
    “message”: err.Error(),
    })
    }
    “`

  • 資深大佬 : yiplee

    用 json.RawMessage 就好了转 map 是浪费

    “`go
    c.JSON( http.StatusOK, gin.H{
    “message”: “ok”,
    “data”: json.RawMessage(data.Data),
    })
    “`

  • 資深大佬 : ClarkAbe

    先把你的 data.Data 序列化成 map 然后再….

  • 資深大佬 : eslizn

    data 用 interface{} 针对不同的内容设计不同的结构体,用 map 真的不合适

  • 資深大佬 : lewinlan

    data.Data 已经是字符串了,你就用 c.string 返回啊,加个返回头。为啥还要反序列化??

  • 資深大佬 : labulaka521

    同意上,直接构造个 json 字符串返回就好了,不用转来转去

  • 資深大佬 : huayumo

    对,就是上说的那样

  • 資深大佬 : jituixiong

    上正解

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具