猿问

如何在golang中序列化字典

我尝试复制此正文以在请求中使用它:


{"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))

但是我找不到方法来完成括号中的正文


拉风的咖菲猫
浏览 170回答 3
3回答

森林海

您需要使用“encoding/json”包中的 Unmarshal 函数并使用虚拟结构来提取切片字段// You can edit this code!// Click here and start typing.package mainimport (    "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)}

小唯快跑啊

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"}]}

浮云间

您的结构不正确。你的标题想要字典,但你写了一个数组或字符串片段。从此更改您的 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
随时随地看视频慕课网APP

相关分类

Go
我要回答