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

将接口与 Golang Maps、Structs 和 JSON 结合使用

将接口与 Golang Maps、Structs 和 JSON 结合使用

Go
慕沐林林 2021-09-27 16:09:19
我有一些 JSON 代码,看起来像:{    "message_id": "12345",    "status_type": "ERROR",    "status": {        "x-value": "foo1234",        "y-value": "bar4321"    }}或者看起来像这样。如您所见,“status”元素根据 status_type 从标准字符串对象更改为字符串数组对象。{    "message_id": "12345",    "status_type": "VALID",    "status": {        "site-value": [            "site1",            "site2"        ]    }}我想我需要让我的“状态”结构采用像“map[string]interface{}”这样的地图,但我不确定如何做到这一点。您也可以在操场上看到这里的代码。http://play.golang.org/p/wKowJu_lngpackage mainimport (    "encoding/json"    "fmt")type StatusType struct {    Id     string            `json:"message_id,omitempty"`    Status map[string]string `json:"status,omitempty"`}func main() {    var s StatusType    s.Id = "12345"    m := make(map[string]string)    s.Status = m    s.Status["x-value"] = "foo1234"    s.Status["y-value"] = "bar4321"    var data []byte    data, _ = json.MarshalIndent(s, "", "    ")    fmt.Println(string(data))}
查看完整描述

3 回答

?
交互式爱情

TA贡献1712条经验 获得超3个赞

我想通了,我想..


package main


import (

    "encoding/json"

    "fmt"

)


type StatusType struct {

    Id     string            `json:"message_id,omitempty"`

    Status map[string]interface{} `json:"status,omitempty"`

}


func main() {

    var s StatusType

    s.Id = "12345"

    m := make(map[string]interface{})

    s.Status = m


    // Now this works

    // s.Status["x-value"] = "foo1234"

    // s.Status["y-value"] = "bar4321"


    // And this works

    sites := []string{"a", "b", "c", "d"}

    s.Status["site-value"] = sites


    var data []byte

    data, _ = json.MarshalIndent(s, "", "    ")


    fmt.Println(string(data))

}


查看完整回答
反对 回复 2021-09-27
  • 3 回答
  • 0 关注
  • 211 浏览
慕课专栏
更多

添加回答

举报

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