Go 中解析多個JSON 物件
處理JSON 資料時,經常會遇到從伺服器傳回多個JSON 物件的情況,而不是括在括號中的單一物件。解析此類數據存在其獨特的挑戰。
例如,如果您有以下格式的回應:
{"something":"foo"} {"something-else":"bar"}
您不能直接使用encoding/json套件來解析此數據,因為它需要括號括住物件。
要解決此問題,您可以利用encoding/json 套件中的 json.Decoder 類型。此類型可讓您從位元組流中解碼 JSON 數據,使其適合處理多個 JSON 物件。
以下範例說明如何使用 json.Decoder 解析多個 JSON 物件:
package main import ( "encoding/json" "fmt" "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) } }
在此範例中,我們使用 strings.NewReader 從輸入字串建立位元組流。然後我們創建一個 json.Decoder 來解碼該串流。
在一個循環中,我們重複呼叫 dec.Decode(&doc) 將每個 JSON 物件解碼為我們的 Doc 結構。循環一直持續到流結束,此時 err 被設定為 io.EOF。
透過利用 json.Decoder,我們可以有效地解析多個 JSON 對象,即使它們沒有括在括號中,從而允許我們可以處理各種 JSON 資料格式。
以上是如何在Go中解析不帶括號的多個JSON物件?的詳細內容。更多資訊請關注PHP中文網其他相關文章!