在golang中获取JSON格式的x-www-form-urlencoded请求的嵌套键值对

在golang中获取json格式的x-www-form-urlencoded请求的嵌套键值对

在golang中,处理JSON格式的x-www-form-urlencoded请求时,有时候会遇到嵌套的键值对。php小编百草为大家提供了解决方案。通过使用json.Unmarshal函数将请求的body解析成map[string]interface{}类型,然后通过类型断言和类型转换来获取嵌套键值对的值。这种方法简单有效,可以帮助开发者轻松处理这类请求。接下来,我们将详细介绍具体的实现步骤。

问题内容

我有一个用例,我们在 x-www-form-urlencoded 主体中获取嵌套键值,如下所示

name=abc&age=12&notes[key1]=value1&notes[key2]=value2

我尝试了 url.parsequery(“name=abc&age=12&notes[key1]=value1&notes[key2]=value2”) 但它给出了

立即学习“go语言免费学习笔记(深入)”;

{  "name": "abc",  "age": 12,  "notes[key1]": "value1",  "notes[key2]": "value2"}

登录后复制

如何为上述正文获取以下 json 格式的值

{  "name": "abc",  "age": 12,  "notes": {    "key1": "value1",    "key2": "value2"  }}

登录后复制

注释可能采用 3 级嵌套格式

我尝试过 url.parsequery 和 r.form 但它们都给出了 notes[key1] 和 notes[key2]。

解决方法

要使用这种类型的查询字符串参数名称解​​组嵌套键值,可以使用 derekstavis/go -qs 这是 rack 查询字符串解析器的端口。

这会返回一个 map[string]interface{},其嵌套键值如下。

值得注意的是,age 的值作为字符串返回,但是,这对于 url.parsequery 来说是相同的。如果需要将其编组为整数,则可以分叉和修改该包。

{  "age": "12",  "name": "abc",  "notes": {    "key1": "value1",    "key2": "value2"  }}

登录后复制

go playground 上提供了完整的示例,代码如下:

go playground 网址:https://www.php.cn/link/74a338894d9bedbc6ddf6746befe1245

package mainimport (    "encoding/json"    "fmt"    "log"    qs "github.com/derekstavis/go-qs")func main() {    v := "name=abc&age=12&notes[key1]=value1&notes[key2]=value2"    q, err := qs.Unmarshal(v)    if err != nil {        log.Fatal(err)    }    j, err := json.MarshalIndent(q, "", "  ")    if err != nil {        log.Fatal(err)    }    fmt.Println(string(j))}

登录后复制

以上就是在golang中获取JSON格式的x-www-form-urlencoded请求的嵌套键值对的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2357035.html

(0)
上一篇 2025年3月1日 16:10:15
下一篇 2025年3月1日 16:10:33

AD推荐 黄金广告位招租... 更多推荐

相关推荐

发表回复

登录后才能评论