英文:
How to parse parameters from POST body to map[string] string?
问题
如何将POST
请求体中的参数解析为map[string]string
?
我正在使用gin框架,我可以将参数解析到预定义的结构体中,但在这种情况下,我不知道键名。
(当我知道键名时,我可以解析,但当我不知道时就有问题)
type Body struct {
Name string
Email string
}
body := Body{}
err := json.NewDecoder(c.Request.Body).Decode(&body)
if err != nil {
c.String(http.StatusServiceUnavailable, err.Error())
return
}
请求体的内容如下:
{
"param1": "1",
"param2": "1",
"param3": "1",
"param4": "1"
}
你可以使用map[string]string
来解析请求体中的参数。首先,你需要定义一个空的map
,然后使用json.Decoder
将请求体解码为map[string]interface{}
类型。接下来,你可以遍历解码后的map
,将键和值转换为字符串,并将它们存储到新的map[string]string
中。以下是示例代码:
params := make(map[string]string)
err := json.NewDecoder(c.Request.Body).Decode(¶ms)
if err != nil {
c.String(http.StatusServiceUnavailable, err.Error())
return
}
// 将解析后的参数打印出来
for key, value := range params {
fmt.Println(key, value)
}
希望对你有帮助!
英文:
How to parse parameters from POST
body to map[string] string
?
I am using gin and I can parse to predefined structure but in this case I don't know key names.
( I can when I know key names but when I don't know is a problem )
type Body struct {
Name string
Email string
}
body := Body{}
err := json.NewDecoder( c.Request.Body ).Decode( &body )
if err != nil {
c.String( http.StatusServiceUnavailable, err.Error() )
return
}
The body looks like this:
{
"param1": "1",
"param2": "1",
"param3": "1",
"param4": "1"
}
答案1
得分: 4
请尝试这个:
package main
import (
"fmt"
"encoding/json"
)
func main() {
j := `{"foo": "aa", "baz": "bb", "qux": "cc"}`
byt := []byte(j)
var dat map[string]string
if err := json.Unmarshal(byt, &dat); err != nil {
panic(err)
}
fmt.Println(dat)
}
输出结果:
map[qux:cc foo:aa baz:bb]
英文:
Try this:
package main
import (
"fmt"
"encoding/json"
)
func main() {
j := `{"foo": "aa", "baz": "bb", "qux": "cc"}`
byt := []byte(j)
var dat map[string]string
if err := json.Unmarshal(byt, &dat); err != nil {
panic(err)
}
fmt.Println(dat)
}
Output:
map[qux:cc foo:aa baz:bb]
<kbd>Go Playground</kbd>
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论