Json 如何从数组循环键值创建结构
谁能告诉我如何从一个数组创建多个结构 例如:Json 如何从数组循环键值创建结构,json,loops,go,struct,foreach,Json,Loops,Go,Struct,Foreach,谁能告诉我如何从一个数组创建多个结构 例如: { "key1": [ { "subkey1": "", "subkey2": "" }, { "subkey1": "" } ] "key2": [ {
{
"key1": [
{
"subkey1": "",
"subkey2": ""
},
{
"subkey1": ""
}
]
"key2": [
{
"subkey1": "",
"subkey2": ""
}
]
}
瞧,我需要为每个键创建一个struct foreach,并基于子键附加第二个struct。一种方法是:
package main
import (
"encoding/json"
"fmt"
"log"
)
var input = `{
"key1": [
{
"subkey1": "Apple",
"subkey2": "Dog"
},
{
"subkey1": "Bear"
}
],
"key2": [
{
"subkey1": "Monkey",
"subkey2": "Turtle"
}
]
}`
var response map[string][]map[string]string
func main() {
var err = json.Unmarshal([]byte(input), &response)
if err != nil {
log.Fatalln(err.Error())
}
for k, v := range response {
fmt.Printf("Key: %s : | Value : %v\n", k, v)
}
for _, v := range response["key1"] {
fmt.Println(v["subkey1"])
}
}
将打印:
Key: key2 : | Value : [map[subkey1:Monkey subkey2:Turtle]]
Key: key1 : | Value : [map[subkey1:Apple subkey2:Dog] map[subkey1:Bear]]
Apple
Bear
[~/Projects/GoSO]@somewhere #> go run main.go
Key: key1 : | Value : [{Apple Dog} {Bear }]
Key: key2 : | Value : [{Monkey Turtle}]
Apple
Bear
如果需要,还可以使用结构作为字典中的值:
package main
import (
"encoding/json"
"fmt"
"log"
)
var input = `{
"key1": [
{
"subkey1": "Apple",
"subkey2": "Dog"
},
{
"subkey1": "Bear"
}
],
"key2": [
{
"subkey1": "Monkey",
"subkey2": "Turtle"
}
]
}`
type YourStruct struct {
Subkey1 string `json:"subkey1"`
Subkey2 string `json:"subkey2"`
}
var response map[string][]YourStruct
func main() {
var err = json.Unmarshal([]byte(input), &response)
if err != nil {
log.Fatalln(err.Error())
}
for k, v := range response {
fmt.Printf("Key: %s : | Value : %v\n", k, v)
}
for _, v := range response["key1"] {
fmt.Println(v.Subkey1)
}
}
将打印:
Key: key2 : | Value : [map[subkey1:Monkey subkey2:Turtle]]
Key: key1 : | Value : [map[subkey1:Apple subkey2:Dog] map[subkey1:Bear]]
Apple
Bear
[~/Projects/GoSO]@somewhere #> go run main.go
Key: key1 : | Value : [{Apple Dog} {Bear }]
Key: key2 : | Value : [{Monkey Turtle}]
Apple
Bear
你是在问如何解码to Go类型问题中的JSON文档吗?是的,我在一个单独的文件中得到了JSON,我需要读取该文件并以JSON打印内容format@bmjp该包描述了如何将JSON实体映射到Go类型。你试过使用这个软件包吗?你遇到了什么问题?谢谢你的回答Matias Barrios。