用Go语言解析多层json文件

用Go语言解析多层json文件

问题描述:

我需要从json文件中的字段解析和获取值。用Go语言解析多层json文件

[{"id": 27}, {"id": 0, "label": "Label 0"}, null, {"id": 93}, {"id": 85}, {"id": 54}, null, {"id": 46, "label": "Label 46"}]}}  

虽然我可以在单层上工作,但我很茫然,我可以在这里遍历层次。 我曾尝试在谷歌,各种帮助网站甚至是计算器中寻找答案。 我找不到任何可以帮助我处理多级json字节数组的示例。 希望有人能引导我理解并努力工作。 在此先感谢

+0

请定义你所需要的更好。一般来说,最佳做法是将json映射到严格的数据类型,然后很容易。 –

只是解析JSON成结构数组:

package main 

import (
    "encoding/json" 
    "fmt" 
) 

type Item struct { 
    Id int 
    Label string 
} 

func main() { 

    data := []byte(`[{"id": 27}, {"id": 0, "label": "Label 0"}, null, {"id": 93}, {"id": 85}, {"id": 54}, null, {"id": 46, "label": "Label 46"}]`) 
    var val []*Item 

    if err := json.Unmarshal(data, &val); err != nil { 
     fmt.Printf("Error: %s\n", val) 
     return 
    } 

    for _, it := range val { 
     fmt.Printf("%#v\n", it) 
    } 

} 

我希望这有助于。

+0

你能解释为什么当你初始化时你需要一个指向Item结构体的指针:var val [] * Item? – wkcamp

+0

我使用指针来反映JSON中的'null'条目。这种方式编组只是插入一个'零'的切片,而不是一个项目{0,“”}。 – plusmid

+0

太好了。谢谢。 – wkcamp