为了账号安全,请及时绑定邮箱和手机立即绑定

如何在golang中序列化字典

如何在golang中序列化字典

Go
拉风的咖菲猫 2022-11-15 13:38:16
我尝试复制此正文以在请求中使用它:{"Responses":[{"type":"DROP_DOWN","value":"0"}]}所以我在做的是:type FruitBasket struct {        Name5 []string `json:"Responses"`            }form := payload{        Name5: []string{"type", "value"},    }    jsonData, err := json.Marshal(form)    fmt.Println(string(jsonData))但是我找不到方法来完成括号中的正文
查看完整描述

3 回答

?
森林海

TA贡献2011条经验 获得超2个赞

您需要使用“encoding/json”包中的 Unmarshal 函数并使用虚拟结构来提取切片字段


// You can edit this code!

// Click here and start typing.

package main


import (

    "encoding/json"

    "fmt"

)


func main() {


    str := `{"Responses":[{"type":"DROP_DOWN","value":"0"}]}`


    type Responses struct {

        Type  string `json:"type"`

        Value string `json:"value"`

    }


    // add dummy struct to hold responses

   type Dummy struct {

        Responses []Responses `json:"Responses"`

    }

    var res Dummy

    err := json.Unmarshal([]byte(str), &res)

    if err != nil {

        panic(err)

    }

    fmt.Println("%v", len(res.Responses))

    fmt.Println("%s", res.Responses[0].Type)

    fmt.Println("%s", res.Responses[0].Value)


}


查看完整回答
反对 回复 2022-11-15
?
小唯快跑啊

TA贡献1863条经验 获得超2个赞

JSON-to-go是一个很好的在线资源,可以为特定的 JSON 模式制作 Go 日期类型。


粘贴您的 JSON 正文并提取嵌套类型,您可以使用以下类型生成所需的 JSON 模式:


// types to produce JSON:

//

//    {"Responses":[{"type":"DROP_DOWN","value":"0"}]}


type FruitBasket struct {

    Response []Attr `json:"Responses"`

}


type Attr struct {

    Type  string `json:"type"`

    Value string `json:"value"`

}

使用:


form := FruitBasket{

    Response: []Attr{

        {

            Type:  "DROP_DOWN",

            Value: "0",

        },

    }

}


jsonData, err := json.Marshal(form)

工作示例:https ://go.dev/play/p/SSWqnyVtVhF


输出:


{"Responses":[{"type":"DROP_DOWN","value":"0"}]}


查看完整回答
反对 回复 2022-11-15
?
浮云间

TA贡献1829条经验 获得超4个赞

您的结构不正确。你的标题想要字典,但你写了一个数组或字符串片段。


从此更改您的 FruitBasket 结构:


type FruitBasket struct {

    Name5 []string `json:"Responses"`

}

对此


type FruitBasket struct {

    Name5 []map[string]interface{} `json:"Responses"`

}

map[string]interface{}是字典吗


这是游乐场https://go.dev/play/p/xRSDGdZYfRN


查看完整回答
反对 回复 2022-11-15
  • 3 回答
  • 0 关注
  • 169 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信