Go では、JSON 値をカスタム スカラー型にアンマーシャリングすることが困難になることがあります。 UnmarshalJSON メソッド内でスカラー値を変更できない。この問題は、スカラーから派生した型に対して UnmarshalJSON を実装するときに発生し、JSON 内の文字列を派生型の値に自動的に変換できなくなります。
これに対処するには、次の手順に従います。
これは、PersonID の UnmarshalJSON メソッドの修正された実装です:
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 }
さらに、MyType 構造体の JSON タグが一致することを確認してください。 JSON 例のフィールド名。必要に応じて、例で使用されている JSON タグと一致するように json: "person" を更新します。
これらの手順に従って、派生スカラー型の UnmarshalJSON を実装し、自動変換を有効にすることができます。 JSON 文字列を目的の値の型に変換します。これにより、JSON データをカスタム タイプに簡単に解析できるようになります。
以上がJSON 文字列をカスタム Go スカラー型にアンマーシャリングするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。