如何迭代这个 Go 接口

这是我的 JSON 帖子的示例:


{

    "jsonFilter" :[{

        "column": "",

        "contains": "",

        "condition": "",

        "not": true

    }, {

        "column": "",

        "contains": "",

        "condition": "",

        "not": true

    }]

}

我的 Echo 框架处理程序:


func GetFilteredFileData(c echo.Context) error {

    body := echo.Map{}

    if err := c.Bind(&body); err != nil {

        fmt.Println(err)

    }


    fmt.Println(body)


    for key, element := range body {

        fmt.Println(key, element)

    }

}

结果:


jsonFilter [map[column:StartTimestamp condition:contains contains:<nil> not:false] map[column:SourceIP condition:startsWith contains:<nil> not:true]]

这不是索引可访问的,也不是键可访问的。有人告诉我我需要制作一个或 2 个结构,但我在那里所做的所有努力都没有奏效(大猩猩模式、json.Marshal 等)


获取此映射并使其在变量/结构引用中实际可用的正确方法是什么?


浮云间
浏览 136回答 1
1回答

翻阅古今

您可以将该 json 解组为以下结构:type Body struct {&nbsp; Filter []JSONFilter `json:"jsonFilter"`}type JSONFilter struct {&nbsp; &nbsp;Column string `json:"column"`&nbsp; &nbsp;Contains string `json:"contains"`&nbsp; &nbsp;Condition string `json:"condition"`&nbsp; &nbsp;Not bool `json:"not"`}我不知道这个回声框架,但看起来像这样的东西应该可以工作:&nbsp; &nbsp; body := Body{}&nbsp; &nbsp; if err := c.Bind(&body); err != nil {&nbsp; &nbsp; &nbsp; &nbsp; fmt.Println(err)&nbsp; &nbsp; }或者,json.Unmarshal如果以上不做。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go