ホームページ >バックエンド開発 >Golang >JSON 文字列をカスタム Go スカラー型にアンマーシャリングするにはどうすればよいですか?

JSON 文字列をカスタム Go スカラー型にアンマーシャリングするにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-12-02 13:08:16745ブラウズ

How Can I Unmarshal JSON Strings into Custom Go Scalar Types?

Go で JSON 値を派生スカラー型にアンマーシャリングする

問題

Go では、JSON 値をカスタム スカラー型にアンマーシャリングすることが困難になることがあります。 UnmarshalJSON メソッド内でスカラー値を変更できない。この問題は、スカラーから派生した型に対して UnmarshalJSON を実装するときに発生し、JSON 内の文字列を派生型の値に自動的に変換できなくなります。

解決策

これに対処するには、次の手順に従います。

  1. アンマーシャル メソッドにポインター レシーバーを使用します。 これにより、メソッド内で行われた変更は、元の値に反映されます。
  2. JSON テキストをプレーン文字列にアンマーシャリングします。 JSON 引用符またはエスケープ シーケンスを削除します。
  3. 派生型のメソッドを使用して、文字列を目的の値に変換します。この場合、Lookup メソッドを呼び出して PersonID を取得します。 value.

これは、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 サイトの他の関連記事を参照してください。

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