首页 > 解决方案 > 如何在 JSON 序列化中添加括号?

问题描述

我正在尝试向 API 端点发送发布请求。如果 JSON 数据中没有括号,端点将无法工作。

map1: = map[string] map[string] interface {} {}
map2: = map[string] interface {} {}
map2["firstObject"] = "value1"
map2["secondObject"] = "value2"

map1["jsonName"] = map2
b, err: = json.Marshal(map1)
if err != nil {
    panic(err)
}

fmt.Println(string(b)) // outputs: {"jsonName":{"firstObject":"value1","secondObject":"value2"}}

我需要输出为:{"jsonName":[{"firstObject":"value1","secondObject":"value2"}]}

但是,我得到了这个:{"jsonName":{"firstObject":"value1","secondObject":"value2"}}

标签: jsongo

解决方案


当 API 需要地图数组时,您指示的有效负载将地图作为 jsonName 的值传递。

如果您先创建内部地图可能会有所帮助:

map2 := map[string]interface{}{
    "firstObject":  "value1",
    "secondObject": "value2",
}

然后将您的外部地图创建为 的地图string => []interface{},并提供您的键和值:

map1 := map[string][]interface{}{
    "jsonName": []interface{}{map2},
}

您可以一次性完成所有操作:

map1 := map[string][]interface{}{
    "jsonName": []interface{}{
        map[string]interface{}{
            "firstObject":  "value1",
            "secondObject": "value2",
        },
    },
}

推荐阅读