gpt4 book ai didi

go - 如何动态解析go fiber中的请求体?

转载 作者:行者123 更新时间:2023-12-05 01:52:53 25 4
gpt4 key购买 nike

我有一个内置于 go fiber 中的 API。我正在尝试将请求正文数据动态解析为键值对。

正如我们所知,fiber 有 context.Body()context.Bodyparser() 方法来执行此操作,但我找不到任何合适的示例来执行此操作动态地使用这些方法。

例如:

func handler(c *fiber.Ctx) error {
req := c.Body()
fmt.Println(string(req))

return nil
}

输出:

key=value&key2=value2&key3&value3

我正在寻找的是一个动态 json,例如:

{
key:"value",
key2:"value2",
key3:"value3",
}

最佳答案

内容的mime-typeapplication/x-www-form-urlencoded 而不是 application/json。要解析,您可以使用 net/url.ParseQuery .其结果是一个 map[string][]string,然后您可以轻松地将其转换为 map[string]string,然后使用 encoding/json 对其进行编码包以获得所需的 JSON 输出。

func handler(c *fiber.Ctx) error {
values, err := url.ParseQuery(strings(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
}

关于go - 如何动态解析go fiber中的请求体?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71396974/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com