英文:
How to process variable input JSON with Golang Gin
问题
我正在尝试使用Gin和Golang编写我的第一个应用程序。
有一个服务将一些变量的JSON数据发送到控制器。
输入数据如下:
{
"shipping": {
"address_id1": {..一些数据..},
"address_id2": {..一些数据..}
},
"items": {
"item_id1": {..一些数据..},
"item_id2": {..一些数据..}
}
}
所以,我不知道items的键,我需要遍历items数组。
如何在Gin中实现这个功能呢?
在PHP中,我会像这样遍历关联数组:
foreach ($_POST['shipping'] as $key => $value) {
..一些处理数据的逻辑..
}
换句话说,如何正确处理输入的数据?
英文:
I trying to write my first app on Gin with Golang
There is some service that post some variable JSON to controller
Input data like this:
{
"shipping:{
"address_id1": {..some data..},
"address_id2": {..some data..}
},
"items": {
"item_id1": {..some data..},
"item_id2": {..some data..}
}
}
So, I don't know items keys and I need to process through items array
How can I do it with Gin?
In PHP I will walk through associative array like
foreach ($_POST['shipping'] as $key => $value) {
..some logic with data..
}
In other words, how to work with input posted data correctly?
答案1
得分: 2
在Go-Gin中,我们可以使用Gin的上下文对象的**Bind()或BindJSON()**方法来访问以JSON格式发布的数据。
当键值未知时,可以使用嵌套的映射。
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"`
}
// 控制器
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)
}
}
以上是要翻译的内容。
英文:
In Go-Gin we can use Bind() or BindJSON() of Gin's context object to access the data which is posted as JSON.
You can use a nested map when the keys are unknown.
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)
}
}
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论