ホームページ >バックエンド開発 >Golang >Go で JSON をアンマーシャリングするときに Null 整数値を処理する方法は?

Go で JSON をアンマーシャリングするときに Null 整数値を処理する方法は?

Susan Sarandon
Susan Sarandonオリジナル
2024-11-28 10:12:12245ブラウズ

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

JSON の Null 整数値のマーシャリング

Go では、特に整数と Null 値を扱う場合に、JSON ストリームの解析が複雑になることがあります。 null 許容型を使用した一般的な問題とその解決策を見てみましょう。

問題:

整数を含む JSON データを解析するときに、次のエラーが発生する場合があります:

json: cannot unmarshal null into Go value of type int64

このエラーは、標準の Go JSON パッケージでは処理できない、JSON 内に null 許容整数がある場合に発生します。

解決策:

この問題に対処するには、整数へのポインターの使用を検討してください。ポインタは nil (null 値を表す) にすることも、関連する値を持つ整数を指すこともできます。実装方法は次のとおりです:

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)
        }
    }
}

この変更された例では:

  • null 許容整数を許可するために、World struct (*int64) で int64 へのポインターを定義します。
  • jsonobj 構造体は World ポインターの配列を保持し、null 以外と null の両方を処理できるようにします。 integers.

JSON を解析するとき、数値と null 整数値を正しく処理し、それに応じて出力します。

Got a null value
2251799813685312

このアプローチは、null 許容整数を処理するためのシンプルで効果的な方法を提供します。 Go で JSON ストリームを解析するとき。

以上がGo で JSON をアンマーシャリングするときに Null 整数値を処理する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。