首页 > 后端开发 > Golang > 正文

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

王林
发布: 2024-02-09 15:15:08
转载
688人浏览过

在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 级嵌套格式

Tellers AI
Tellers AI

Tellers是一款自动视频编辑工具,可以将文本、文章或故事转换为视频。

Tellers AI 78
查看详情 Tellers AI

我尝试过 url.parsequeryr.form 但它们都给出了 notes[key1]notes[key2]

解决方法

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

这会返回一个 derekstavis/go -qs,其嵌套键值如下。

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

{
  "age": "12",
  "name": "abc",
  "notes": {
    "key1": "value1",
    "key2": "value2"
  }
}
登录后复制

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

go playground 网址:https://www.php.cn/link/0fc780bb04e74ce5ed154d2e49cfe2fd

package main

import (
    "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请求的嵌套键值对的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:stackoverflow网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号