Go で混合型 JSON 配列をシリアル化する
Go で、文字列、浮動小数点、Unicode 文字を含む混合型 JSON 配列をシリアル化する、課題が生じる可能性があります。 Python では混合型の配列が可能ですが、Go にはこの機能がありません。
MarshalJSON によるシリアル化
シリアル化をカスタマイズするために、Go は json.Marshaler インターフェイスを提供します。このインターフェイスを実装することで、構造体 Row をエンコードする方法を指定できます。この場合、それを異種の値の配列としてエンコードする必要があります。
type Row struct { Ooid string Score float64 Text string } func (r *Row) MarshalJSON() ([]byte, error) { arr := []interface{}{r.Ooid, r.Score, r.Text} return json.Marshal(arr) }
MarshalJSON は、インターフェースの中間スライスを取得して混合値をエンコードし、エンコードされた JSON バイトを返します。
UnmarshalJSON による逆シリアル化
へJSON バイトから構造体に逆シリアル化する場合、Go は json.Unmarshaler インターフェースを提供します。
func (r *Row) UnmarshalJSON(bs []byte) error { arr := []interface{}{} json.Unmarshal(bs, &arr) // TODO: add error handling here. r.Ooid = arr[0].(string) r.Score = arr[1].(float64) r.Text = arr[2].(string) return nil }
UnmarshalJSON は同様のインターフェースの中間スライスを使用します。{} 🎜>これらのインターフェイスを実装することで、シリアル化と逆シリアル化のプロセスを制御できるようになり、混合型の配列を操作できるようになります。行きましょう
以上がGo で混合型 JSON 配列をシリアル化および逆シリアル化する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。