[英]Parsing a Nested Array of Objects from JSON to Go
我查看了許多有關如何使用 go 解析 JSON 的示例,並且了解了基礎知識。 但是我無法正確解析一組對象。 我為對象創建了一個結構,但沒有骰子!
這是一個關於它的游樂場:游樂場
package main
import (
"encoding/json"
"fmt"
)
type Outer struct {
Number int `json: "number"`
Message string `json: "message"`
Person []Person `json: "person"`
}
type Person struct {
craft string `json: "craft"`
name string `json: "name"`
}
func main() {
text := `{"people": [{"craft": "ISS", "name": "Sergey Rizhikov"}, {"craft": "ISS", "name": "Andrey Borisenko"}, {"craft": "ISS", "name": "Shane Kimbrough"}, {"craft": "ISS", "name": "Oleg Novitskiy"}, {"craft": "ISS", "name": "Thomas Pesquet"}, {"craft": "ISS", "name": "Peggy Whitson"}], "message": "success", "number": 6}`
textBytes := []byte(text)
people1 := Outer{}
err := json.Unmarshal(textBytes, &people1)
if err != nil {
fmt.Println(err)
return
}
fmt.Println(people1)
}
您的代碼中有幾個錯誤:
people
字段,但在 struct 聲明中有person
。Person
結構中,字段必須以大寫字母開頭。json:"name"
有效而json: "name"
無效。這是固定版本。
更新了問題修復的代碼:
package main
import (
"encoding/json"
"fmt"
)
type Outer struct {
Number int `json:"number"`
Message string `json:"message"`
Person []Person `json:"person"`
}
type Person struct {
Craft string `json:"craft"`
Name string `json:"name"`
}
func main() {
text := `{"person": [{"craft": "ISS", "name": "Sergey Rizhikov"}, {"craft": "ISS", "name": "Andrey Borisenko"}, {"craft": "ISS", "name": "Shane Kimbrough"}, {"craft": "ISS", "name": "Oleg Novitskiy"}, {"craft": "ISS", "name": "Thomas Pesquet"}, {"craft": "ISS", "name": "Peggy Whitson"}], "message": "success", "number": 6}`
textBytes := []byte(text)
people1 := Outer{}
err := json.Unmarshal(textBytes, &people1)
if err != nil {
fmt.Println(err)
return
}
b, err := json.Marshal(people1)
if err != nil {
fmt.Println("marshalling error")
return
}
fmt.Println("Data : ", string(b))
}
輸出:
Data : {"number":6,"message":"success","person":[{"craft":"ISS","name":"Sergey Rizhikov"},{"craft":"ISS","name":"Andrey Borisenko"},{"craft":"ISS","name":"Shane Kimbrough"},{"craft":"ISS","name":"Oleg Novitskiy"},{"craft":"ISS","name":"Thomas Pesquet"},{"craft":"ISS","name":"Peggy Whitson"}]}
在操場上簽到: https : //play.golang.org/p/tdNpgUAOLVF
將人員結構字段更新為公共,如下所示:
type AutoGenerated struct {
People []People `json:"people"`
Message string `json:"message"`
Number int `json:"number"`
}
type People struct {
Craft string `json:"craft"`
Name string `json:"name"`
}
使用該工具並自動幫助您。 最好的 JSON 到 Golang 轉換器
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.