Go での派生スカラー型への JSON 文字列のアンマーシャリング
Go では、既存のスカラー型から新しいスカラー型を派生できます。ただし、このような型に UnmarshalJSON を実装することは、標準ライブラリの制限により困難になる可能性があります。
これを正しく処理するには、UnmarshalJSON メソッドのポインター レシーバーを使用することが不可欠です。値の受信者は、メソッド内で行われた変更を保持しません。
UnmarshalJSON に渡される引数は JSON テキストです。これは、引用符を破棄して、プレーンな文字列にアンマーシャリングできます。
func (intValue *PersonID) UnmarshalJSON(data []byte) error { var s string if err := json.Unmarshal(data, &s); err != nil { return err } *intValue = Lookup(s) return nil }
さらに、コード内の JSON タグが、アンマーシャリングする JSON データのキーと一致することを確認してください。
json.Unmarshal([]byte(`{"person": "Ralph", "count": 4, "greeting": "Hello"}`), &m);
これらの手順に従うことで、派生スカラー型に対して UnmarshalJSON を効果的に実装でき、JSON 文字列を次の値に自動的に変換できるようになります。カスタムタイプ。
以上がJSON 文字列をカスタム Go スカラー型にアンマーシャリングする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。