我想将以下JSON解组到结构中:
{"MAIN":{"data":[{"KEY1":"1111111","KEY2":"2222222","KEY3":0,"KEY4":"AAAAAAA","KEY5":"9999","KEY6":"4","KEY7":"BBBBBBB"}]}}
我试图以jsonStruct各种方式修改,但是结构始终为空:
jsonStruct
package main import ( "encoding/json" "fmt" ) type jsonStruct struct { main struct { data []struct { Key1 string `json:"KEY1"` Key2 string `json:"KEY2"` Key3 int `json:"KEY3"` Key4 string `json:"KEY4"` Key5 string `json:"KEY5"` Key6 string `json:"KEY6"` Key7 string `json:"KEY7"` } `json:"data"` } `json:"MAIN"` } func main() { jsonData := []byte(`{"MAIN":{"data":[{"KEY1":"1111111","KEY2":"2222222","KEY3":0,"KEY4":"AAAAAAA","KEY5":"9999","KEY6":"4","KEY7":"BBBBBBB"}]}}`) var js jsonStruct err := json.Unmarshal(jsonData, &js) if err != nil { panic(err) } fmt.Println(js) }
输出:
{{[]}}
过去使用的JSON没有括号,因此我怀疑问题与它们有关。
有人可以帮忙吗?
https://play.golang.org/p/pymKbOqcM-
发生这种情况是因为其他包(encoding/json)无法访问私有字段(即使具有反射)。在私有语言中,私有字段是以小写字母开头的字段。要解决此问题,请使您的结构包含公共字段(以大写字母开头):
encoding/json
type jsonStruct struct { Main struct { Data []struct { Key1 string `json:"KEY1"` Key2 string `json:"KEY2"` Key3 int `json:"KEY3"` Key4 string `json:"KEY4"` Key5 string `json:"KEY5"` Key6 string `json:"KEY6"` Key7 string `json:"KEY7"` } `json:"data"` } `json:"MAIN"` }
https://play.golang.org/p/lStXAvDtpZ