猿问

在 Golang 中为复杂的 JSON 数组创建结构

我有以下 JSON 数组,我正在尝试将其转换为结构。


[

    {

        "titel": "test 1",

        "event": "some value",

        "pair": "some value",

        "condition": [

            "or",

            [

                "contains",

                "url",

                "/"

            ]

        ],

        "actions": [

            [

                "option1",

                "12",

                "1"

            ],

            [

                "option2",

                "3",

                "1"

            ]

        ]

    }, {

        "titel": "test 2",

        "event": "some value",

        "pair": "some value",

        "condition": [

            "or",

            [

                "contains",

                "url",

                "/"

            ]

        ],

        "actions": [

            [

                "option1",

                "12",

                "1"

            ],

            [

                "option2",

                "3",

                "1"

            ]

        ]

    }

]

这是我到目前为止的结构:


type Trigger struct {

    Event     string        `json:"event"`  

    Pair      string        `json:"pair"`   

    Actions   [][]string    `json:"actions"`

    Condition []interface{} `json:"condition"`

}


type Triggers struct {

    Collection []Trigger

}

但是,这并没有真正涵盖“条件”部分。理想情况下,id 也喜欢有一个结构。


有只小跳蛙
浏览 187回答 1
1回答

交互式爱情

假设根数组中的每个项目只能有一个条件,您可以尝试下面的结构。这可以使使用Condition清楚。https://play.golang.org/p/WxFhBjJmENtype Trigger struct {    Event     string     `json:"event"`    Pair      string     `json:"pair"`    Actions   [][]string `json:"actions"`    Condition Condition  `json:"condition"`}type Condition []interface{}func (c *Condition) Typ() string {    return (*c)[0].(string)}func (c *Condition) Val() []string {    xs := (*c)[1].([]interface{})    ys := make([]string, len(xs))    for i, x := range xs {        ys[i] = x.(string)    }    return ys}type Triggers struct {    Collection []Trigger}
随时随地看视频慕课网APP

相关分类

Go
我要回答