ホームページ >バックエンド開発 >Golang >Go で JSON Null フィールドと欠落フィールドを区別するにはどうすればよいですか?

Go で JSON Null フィールドと欠落フィールドを区別するにはどうすればよいですか?

DDD
DDDオリジナル
2024-11-30 15:34:16988ブラウズ

How to Distinguish Between JSON Null and Missing Fields in Go?

Go の JSON Null フィールドと欠落フィールド: 比較

Go で JSON データを操作する場合、フィールドを区別することが重要です。明示的に null に設定されているフィールドや、単に JSON 入力から欠落しているフィールド。この区別は、JSON データが Golang 構造体を表す場合に必要になります。

null フィールドと欠落フィールドの両方が、対応する Go struct フィールドの nil 値になります。ただし、フィールドが意図的に null に設定されているか、JSON データに含まれていないかを判断するには、2 つのシナリオを区別することが重要です。

この課題に対処するには、次の 2 つのアプローチが利用可能です。

ジェネリックでのオプションの構造体の使用 (Go 1.18 )

Go 1.18 ではジェネリックが導入され、この状況に対処するためのジェネリックな Optional 構造体の作成が可能になります。 Optional struct には、JSON 入力内の値の存在を示す定義済みのブール型フィールドと、実際の値への Value ポインターが備わっています。

type Optional[T any] struct {
    Defined bool
    Value   *T
}
type Payload struct {
    Field1 Optional[string] `json:"field1"`
    Field2 Optional[bool]   `json:"field2"`
    Field3 Optional[int32]  `json:"field3"`
}

カスタム オプション構造体の使用 (プレジェネリクス) )

ジェネリックスの前に、カスタムの Optional* 構造体を次のように指定できます。オプションとして処理する必要があるデータ型ごとに作成されます。

type OptionalString struct {
    Defined bool
    Value   *string
}
type Payload struct {
    SomeField1 string         `json:"somefield1"`
    SomeField2 OptionalString `json:"somefield2"`
}

これらの手法を使用することで、開発者は、JSON フィールドが明示的に null に設定されているか、入力データに存在していないかを簡単に識別できます。により、データの検証と処理に対する柔軟性と制御が向上します。

以上がGo で JSON Null フィールドと欠落フィールドを区別するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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