首頁 > 後端開發 > Golang > 如何在 Go 中解析多個 JSON 對象,尤其是當它們嵌套時?

如何在 Go 中解析多個 JSON 對象,尤其是當它們嵌套時?

DDD
發布: 2024-12-26 09:03:09
原創
833 人瀏覽過

How Can I Parse Multiple JSON Objects in Go, Especially When They're Nested?

在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)
    }
}
登入後複製

在此解決方案中:

  • 初始化了 json.Decoder從包含 JSON 資料的字串中讀取。
  • 循環迭代流,將每個 JSON 物件解碼為 Doc struct。
  • 解碼繼續,直到遇到 io.EOF(檔案結束),表示串流結束。
  • 列印每個成功解碼的物件。

Playground 和結論

您可以在Go Playground 上嘗試此解決方案: https://play.golang.org/p/ANx8MoMC0yq

透過使用json.Decoder,我們能夠解析多個JSON 對象,即使它們嵌套在更大的JSON結構中也是如此。

以上是如何在 Go 中解析多個 JSON 對象,尤其是當它們嵌套時?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板