我在 go Fiber 中内置了一个 API。我正在尝试动态地将请求正文数据解析为键值对。
众所周知,光纤具有context.Body()执行context.Bodyparser()此操作的方法,但我找不到任何适当的示例来使用这些方法动态执行此操作。
例如:
func handler(c *fiber.Ctx) error {
req := c.Body()
fmt.Println(string(req))
return nil
}
Run Code Online (Sandbox Code Playgroud)
输出:
key=value&key2=value2&key3&value3
Run Code Online (Sandbox Code Playgroud)
我正在寻找的是一个动态 json,例如:
key=value&key2=value2&key3&value3
Run Code Online (Sandbox Code Playgroud)
内容的mime- type不是application/x-www-form-urlencoded。application/json要解析您可以使用net/url.ParseQuery. 其结果是 a,map[string][]string然后您可以轻松地将其转换为 a map[string]string,然后将其与包一起encoding/json编组以获得所需的 JSON 输出。
您可以从以下代码开始:
func handler(c *fiber.Ctx) error {
values, err := url.ParseQuery(string(c.Body()))
if err != nil {
return err
}
obj := map[string]string{}
for k, v := range values {
if len(v) > 0 {
obj[k] = v[0]
}
}
out, err := json.Marshal(obj)
if err != nil {
return err
}
fmt.Println(string(out))
return nil
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5317 次 |
| 最近记录: |