gpt4 book ai didi

json - 包含字符串和整数的 Golang 映射

转载 作者:IT王子 更新时间:2023-10-29 01:26:21 24 4
gpt4 key购买 nike

我正在尝试在 golang 中使用 JSON.Marshal() 从 map 创建 JSON 字符串。但是,int 值显示为用双引号括起来的字符串。

我的代码正在输出:

{ "age":
{
"$gt":"22",
"$lt":"20"
},
"location":
{
"$eq":"london"
},
"name":{
"$eq":"fred"
}
}

代替

{ "age":
{
"$gt":22,
"$lt":20
},
"location":
{
"$eq":"london"
},
"name":{
"$eq":"fred"
}
}

我正在使用:

var output_map = map[string]map[string]string{}

//Populate map here

output_json, err := json.Marshal(output_map)

if err!= nil {
fmt.Println("Error encoding JSON")
}

fmt.Println(output_json)

我的理解是,如果提供了 JSON.Marshal() 将正确打印整数,但我的 map 不包含整数。我可以将我的 map 更改为 map[string]map[string]int{} 但它不会包含“名称”和“位置”的字符串值。

最终的问题是我需要 map 同时包含 int 和 string 值。某种 map[string]map[string]{}。

我怎样才能做到这一点?提前谢谢你。

哈利

最佳答案

如果您无法使用类型正确的结构描述您的数据,请考虑使用值类型为 interface{}(基本上是任何类型)的映射:

output_map := map[string]map[string]interface{}{}

例如:

output_map := map[string]map[string]interface{}{
"age": {
"$gt": 18,
},
"location": {
"eq": "London",
},
}
bytes, err := json.MarshalIndent(&output_map, "", " ")
if err != nil {
panic(err)
}
// {
// "age": {
// "$gt": 18
// },
// "location": {
// "eq": "London"
// }
// }

当然,使用 interface{} 类型并不是最佳做法;然而,有时它是完成某些事情的唯一方法。

关于json - 包含字符串和整数的 Golang 映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47703066/

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