如何使用golang map创建JSON数组?

Din*_*lam 2 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)
    }

}
Run Code Online (Sandbox Code Playgroud)

我目前的输出:

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]
Run Code Online (Sandbox Code Playgroud)

我需要一个JSON输出,如下所示:

[{id:1, name:A},
{id:2, name:B},
{id:3, name:C},
{id:4, name:D},
{id:5, name:E}]
Run Code Online (Sandbox Code Playgroud)

我知道使用map的基础知识是一个用于key:value对的字典.如何使用map实现JSON输出.

小智 6

要创建JSON直通地图数组,您需要创建一个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))
}
Run Code Online (Sandbox Code Playgroud)

你也可以在这里测试一下

它打印JSON为:

[{"id":"1","name":"A"},
{"id":"2","name":"B"},
{"id":"3","name":"C"},
{"id":"4","name":"D"},
{"id":"5","name":"E"}]
Run Code Online (Sandbox Code Playgroud)