json - 如何使用 Go map 创建对象的 JSON 数组?

标签 json dictionary go

我需要使用 map 创建一个 JSON 数组。

package main
import "fmt"
func main(){
    id := [5]string{"1","2","3","4","5"}
    name := [5]string{"A","B","C","D","E"}
    parseData := make(map[string]string)
    for counter,_ := range id {
        parseData["id"] = id[counter]
        parseData["name"] = name[counter]
        fmt.Println(parseData)
    }

}

我当前的输出:

map[id:1 name:A]
map[id:2 name:B]
map[id:3 name:C]
map[id:4 name:D]
map[id:5 name:E]

我需要如下所示的 JSON 输出:

[{id:1, name:A},
{id:2, name:B},
{id:3, name:C},
{id:4, name:D},
{id:5, name:E}]

我知道使用 map 的基础知识,它是一个用于键值对的字典。如何使用 map 实现 JSON 输出。

最佳答案

要通过 map 创建 JSON 数组,您需要创建一个 map 作为 slice 而另一个只是单个 map 然后赋值在单个 map 中逐一赋值,然后将其附加到 map slice 中,如遵循以下代码:

package main

import (
    "fmt"
    "encoding/json"
)

func main(){
    id := [5]string{"1","2","3","4","5"}
    name := [5]string{"A","B","C","D","E"}

    parseData := make([]map[string]interface{}, 0, 0)

    for counter,_ := range id {
        var singleMap = make(map[string]interface{})
        singleMap["id"] = id[counter]
        singleMap["name"] = name[counter]
        parseData = append(parseData, singleMap)
    }
    b, _:= json.Marshal(parseData)
    fmt.Println(string(b))
}

你也可以测试here

它将 JSON 打印为:

[{"id":"1","name":"A"},
{"id":"2","name":"B"},
{"id":"3","name":"C"},
{"id":"4","name":"D"},
{"id":"5","name":"E"}]

关于json - 如何使用 Go map 创建对象的 JSON 数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53558447/

相关文章:

c++ - 创建 VARIANT 的 CMap 的正确方法

python - 隐式函数,希望根据键执行不同的数学函数

soap - 如何在 Go 中进行 SOAP 调用?

testing - 使用 go build 但我也看到了 -test 标志

javascript - 从 URL JSON 检索数据

ios - 当我尝试使用我的 Json 时,它只显示第一个值(标题)Objective c

javascript - 我想在我想要的时间每天重新启动倒计时两次

json - Dart 2.0中强模式的问题

python - 如何将字典列表写入具有多个值的 CSV

templates - Golang http/模板变量