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

使用子结构数组填充结构以转换为 json

使用子结构数组填充结构以转换为 json

Go
月关宝盒 2022-10-04 19:30:05
我正在尝试发布一些 JSON。使用JSON转围棋工具,我定义了以下结构:type IssueSetState struct {    ID           string `json:"id"`    CustomFields []struct {        Value struct {            Name string `json:"name"`        } `json:"value"`        Name string `json:"name"`        Type string `json:"$type"`    } `json:"customFields"`}我正在尝试用一些数据填充它,然后我可以将其传递到库中:http    jsonValues := &IssueSetState{        ID: resultEntityId.ID,        CustomFields: []{            Value: {                Name: "Fixed",            },            Name: "State",            Type: "StateIssueCustomField",        },    }    jsonEncoded := new(bytes.Buffer)    json.NewEncoder(jsonEncoded).Encode(jsonValues)我不断收到如下错误:./main.go:245:19: syntax error: unexpected {, expecting type./main.go:246:9: syntax error: unexpected :, expecting comma or }./main.go:249:8: syntax error: unexpected : at end of statement./main.go:251:4: syntax error: unexpected comma after top level declaration我确信我所犯的错误很简单,但我是Go的新手。
查看完整描述

2 回答

?
慕的地10843

TA贡献1785条经验 获得超8个赞

一种可能的方法是为您拥有的每个匿名结构定义命名结构。


type IssueSetState struct {

    ID           string        `json:"id"`

    CustomFields []CustomField `json:"customFields"`

}


type CustomField struct {

    Value Value  `json:"value"`

    Name  string `json:"name"`

    Type  string `json:"type"`

}


type Value struct {

    Name string `json:"name"`

}

现在你可以像这样创建它:


IssueSetState{

    ID: resultEntityId.ID,

    CustomFields: []CustomField{

        {

            Value: Value{

                Name: "Fixed",

            },

            Name: "State",

            Type: "StateIssueCustomField",

        },

        {

            Value: Value{

                Name: "Fixed",

            },

            Name: "State",

            Type: "StateIssueCustomField",

        },

    },

}


查看完整回答
反对 回复 2022-10-04
?
繁花不似锦

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

所以你初始化了错误的 json 值。

您可以通过2方式修复它:

  1. https://play.golang.org/p/LFO4tOLyG60

    使结构平坦

  2. https://play.golang.org/p/TyFfaMf7XeF

    通过在声明值时重复结构定义

第一个应该更容易,更清晰。


查看完整回答
反对 回复 2022-10-04
  • 2 回答
  • 0 关注
  • 129 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号