如何使用Golang Gin处理变量输入JSON

vmdwslir  于 2023-04-27  发布在  Go
关注(0)|答案(1)|浏览(189)

我试图用Golang在Gin上写我的第一个应用程序有一些服务,它会将一些变量JSON发布到控制器输入数据,如下所示:

{
  "shipping:{
    "address_id1": {..some data..},
    "address_id2": {..some data..}
  },
  "items": {
    "item_id1": {..some data..},
    "item_id2": {..some data..}
  }
}

所以,我不知道items键,我需要通过items数组来处理,我怎么能用Gin来做呢?在PHP中,我将像这样遍历关联数组

foreach ($_POST['shipping'] as $key => $value) {
  ..some logic with data..
}

换句话说,如何正确地处理输入过帐数据?

a7qyws3x

a7qyws3x1#

在Go-Gin中,我们可以使用Gin的上下文对象的**Bind()BindJSON()**来访问以JSON形式发布的数据。
当键未知时,可以使用嵌套Map。

type Shipping map[string]map[string]string
type Items map[string]map[string]string

type RequestPayload struct {
    Shipping Shipping `json:"shipping"`
    Items    Items    `json:"items"`
}

// controller
func ShippingController(ctx *gin.Context) {
    var request RequestPayload
    if err := ctx.BindJSON(&request); err != nil {
        panic(err)
    }

    for key, value := range request.Items {
        fmt.Println("The key : ", key)
        fmt.Println("The value : ", value)
    }

}

相关问题