首頁 >後端開發 >Golang >如何在Go中解析不帶括號的多個JSON物件?

如何在Go中解析不帶括號的多個JSON物件?

DDD
DDD原創
2025-01-01 13:25:10305瀏覽

How to Parse Multiple JSON Objects in Go Without Brackets?

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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn