如何使用golang映射创建JSON数组?
问题描述:
I need to create a JSON array using map.
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)
}
}
My current output:
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]
I need a JSON output like below:
[{id:1, name:A},
{id:2, name:B},
{id:3, name:C},
{id:4, name:D},
{id:5, name:E}]
I know basics of using map its a dictionary used for key:value pairs.How can I achieve JSON output using map.
我需要使用map创建一个JSON数组。 p>
包main
import“ fmt”
func main(){
id:= [5] string {“ 1”,“ 2”,“ 3”,“ 4“,” 5“}
名称:= [5] string {” A“,” B“,” C“,” D“,” E“}
parseData:= make(map [string] string)
代表计数器,_:=范围ID {
parseData [“ id”] = id [计数器]
parseData [“ name”] =名称[计数器]
fmt.Println(parseData)
}
}
code> pre>
我当前的输出: p>
map [id:1 name:A]
map [ id:2名称:B]
map [id:3名称:C]
map [id:4名称:D]
map [id:5名称:E]
code> pre>
\ n 我需要如下所示的JSON输出: p>
[{{id:1,name:A},
{id:2,name:B},\ n {id:3,名称:C},
{id:4,名称:D},
{id:5,名称:E}]
code> pre>
我了解使用map的基础知识,它是用于key:value对的字典。如何使用map实现JSON输出。 p>
div>
答
To create array of JSON
through map, you need to create one map
as a slice
and another one just single map and then assign value one by one in single map then append this into slice of map, like follow the below code:
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))
}
Also you can test over here
it prints JSON
as:
[{"id":"1","name":"A"},
{"id":"2","name":"B"},
{"id":"3","name":"C"},
{"id":"4","name":"D"},
{"id":"5","name":"E"}]
答
For me this more looks like an array of objects. You can have your desired output like this:
type data struct {
Id string
Name string
}
func main(){
id := [5]string{"1","2","3","4","5"}
name := [5]string{"A","B","C","D","E"}
var parsedData []data
for counter := range id {
parsedData = append(parsedData, data{Name: name[counter], Id: id[counter]})
}
bytes, _ := json.Marshal(parsedData)
fmt.Print(string(bytes))
}
The output should look like this:
[
{"Id":"1","Name":"A"},
{"Id":"2","Name":"B"},
{"Id":"3","Name":"C"},
{"Id":"4","Name":"D"},
{"Id":"5","Name":"E"}
]