在Go 中解析多個JSON 物件:尋址巢狀物件
處理從伺服器以嵌套物件形式傳回的多個JSON 物件時,標準encoding/json套件可能會遇到困難。本文深入研究了使用 json.Decoder 有效處理此類場景的解決方案。
考慮以下範例:
{"something":"foo"} {"something-else":"bar"}
使用下列程式碼解析此資料:
correct_format := strings.Replace(string(resp_body), "}{", "},{", -1) json_output := "[" + correct_format + "]"
導致錯誤。
解決方案使用json.Decoder
為了解決這個問題,我們使用 json.Decoder。 json.Decoder 讀取並解碼類似 JSON 資料流,從輸入中順序解碼各個 JSON 物件。
package main import ( "encoding/json" "fmt" "io" "log" "strings" ) var input = ` {"foo": "bar"} {"foo": "baz"} ` type Doc struct { Foo string } func main() { dec := json.NewDecoder(strings.NewReader(input)) for { var doc Doc err := dec.Decode(&doc) if err == io.EOF { // all done break } if err != nil { log.Fatal(err) } fmt.Printf("%+v\n", doc) } }
在此解決方案中:
Playground 和結論
您可以在Go Playground 上嘗試此解決方案: https://play.golang.org/p/ANx8MoMC0yq
透過使用json.Decoder,我們能夠解析多個JSON 對象,即使它們嵌套在更大的JSON結構中也是如此。
以上是如何在 Go 中解析多個 JSON 對象,尤其是當它們嵌套時?的詳細內容。更多資訊請關注PHP中文網其他相關文章!