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

如何迭代这个 Go 接口

如何迭代这个 Go 接口

Go
浮云间 2022-05-18 14:01:16
这是我的 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 等)获取此映射并使其在变量/结构引用中实际可用的正确方法是什么?
查看完整描述

1 回答

?
翻阅古今

TA贡献1780条经验 获得超5个赞

您可以将该 json 解组为以下结构:


type Body struct {

  Filter []JSONFilter `json:"jsonFilter"`

}


type JSONFilter struct {

   Column string `json:"column"`

   Contains string `json:"contains"`

   Condition string `json:"condition"`

   Not bool `json:"not"`

}

我不知道这个回声框架,但看起来像这样的东西应该可以工作:


    body := Body{}

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

        fmt.Println(err)

    }

或者,json.Unmarshal如果以上不做。


查看完整回答
反对 回复 2022-05-18
  • 1 回答
  • 0 关注
  • 135 浏览
慕课专栏
更多

添加回答

举报

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