Go での SQL NULL 値の JSON 処理
Go で null 許容 SQL データ型を扱う場合、sql.Nullxxx 型がよく使用されます。 null 値を許可するため。ただし、json パッケージを使用してそのような構造を JSON にエンコードするときに、フォーマットの問題が発生する可能性があります。
デフォルトでは、sql.Nullxxx 型は、その構造の性質により、追加のレベルを持つオブジェクトとしてマーシャリングされます。これにより、望ましくない JSON 出力が発生する可能性があります。これに対処するには、sql.Nullxxx 型を埋め込むカスタム型の json.Marshaller インターフェイスと json.Unmarshaler インターフェイスを実装することを検討してください。
たとえば、次の JsonNullInt64 型は、sql.NullInt64 値を次のようにエンコードするために使用できます。 null または整数:
type JsonNullInt64 struct { sql.NullInt64 } func (v JsonNullInt64) MarshalJSON() ([]byte, error) { if v.Valid { return json.Marshal(v.Int64) } else { return json.Marshal(nil) } } func (v *JsonNullInt64) UnmarshalJSON(data []byte) error { var x *int64 if err := json.Unmarshal(data, &x); err != nil { return err } if x != nil { v.Valid = true v.Int64 = *x } else { v.Valid = false } return nil }
の場合JsonNullInt64 型を使用すると、期待どおりの方法でエンコードされ、レベルを追加しなくても適切な JSON 表現が可能になります。
以上がGo JSON マーシャリングで SQL NULL 値を処理する方法?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。