
在golang中,处理JSON格式的x-www-form-urlencoded请求时,有时候会遇到嵌套的键值对。php小编百草为大家提供了解决方案。通过使用json.Unmarshal函数将请求的body解析成map[string]interface{}类型,然后通过类型断言和类型转换来获取嵌套键值对的值。这种方法简单有效,可以帮助开发者轻松处理这类请求。接下来,我们将详细介绍具体的实现步骤。
我有一个用例,我们在 x-www-form-urlencoded 主体中获取嵌套键值,如下所示
name=abc&age=12¬es[key1]=value1¬es[key2]=value2
我尝试了 url.parsequery("name=abc&age=12¬es\[key1\]=value1¬es\[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 查询字符串解析器的端口。
这会返回一个 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¬es[key1]=value1¬es[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中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号