首頁 > 後端開發 > Golang > 在 Go 中解組 JSON 時如何處理空整數值?

在 Go 中解組 JSON 時如何處理空整數值?

Susan Sarandon
發布: 2024-11-28 10:12:12
原創
244 人瀏覽過

How to Handle Null Integer Values When Unmarshalling JSON in Go?

JSON 編組空整數值

在 Go 中,解析 JSON 流有時會導致複雜化,尤其是在處理整數和空值時。讓我們探討一下使用可空類型的常見問題及其解決方案。

問題:

解析包含整數的JSON 資料時,可能會遇到以下錯誤:

json: cannot unmarshal null into Go value of type int64
登入後複製

當JSON 中有可空整數時,會發生此錯誤,而標準Go JSON包裝無法處理該整數

解:

要解決此問題,請考慮使用指向整數的指標。指標可以是 nil(表示空值),也可以指向具有關聯值的整數。以下是如何實現它:

import (
    "encoding/json"
    "fmt"
)

var d = []byte(`{ "world":[{"data": 2251799813685312}, {"data": null}]}`)

type jsonobj struct{ World []*int64 }
type World struct{ Data *int64 }

func main() {
    var data jsonobj
    jerr := json.Unmarshal(d, &data)
    if jerr != nil {
        fmt.Println(jerr)
    }

    for _, w := range data.World {
        if w == nil {
            fmt.Println("Got a null value")
        } else {
            fmt.Println(*w)
        }
    }
}
登入後複製

在這個修改後的範例中:

  • 我們在World 結構體(*int64) 定義一個指向int64 的指針,以允許可為null 的整數。
  • jsonobj 結構體保存了一個World 指標數組,允許它處理非null 和null

解析JSON 時,它會正確處理數字和空整數值並相應地打印它們:

Got a null value
2251799813685312
登入後複製

這種方法提供了一種簡單有效的方法來處理可為空整數在Go 中解析JSON 流時。

以上是在 Go 中解組 JSON 時如何處理空整數值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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