猿问

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

我正在尝试发布一些 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的新手。


月关宝盒
浏览 130回答 2
2回答

慕的地10843

一种可能的方法是为您拥有的每个匿名结构定义命名结构。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",        },    },}

繁花不似锦

所以你初始化了错误的 json 值。您可以通过2方式修复它:https://play.golang.org/p/LFO4tOLyG60使结构平坦https://play.golang.org/p/TyFfaMf7XeF通过在声明值时重复结构定义第一个应该更容易,更清晰。
随时随地看视频慕课网APP

相关分类

Go
我要回答