Go プログラマは、JSON をアンマーシャリングしようとすると、「json: 文字列を int64 型の Go 値にアンマーシャリングできません」というエラー メッセージに遭遇することがよくあります。データ。このエラーは、int64 型の Go 構造体フィールドに対応する JSON フィールドに文字列値が含まれている場合に発生します。
次の Go 構造体について考えてみましょう:
type Survey struct { Id int64 `json:"id,omitempty"` Name string `json:"name,omitempty"` }
この構造体を JSON にマーシャリングし、JavaScript クライアントの「id」フィールドを変更すると、次のような JSON 文字列が送信される可能性があります。 this:
{"id": "1"}
ここで、「id」フィールドは文字列です。
この JSON 文字列を Go 構造体にアンマーシャリングしようとすると、前述のエラーが発生します。
この状況に対処するには、次のように、JSON タグで ,string オプションを指定できます。以下:
type Survey struct { Id int64 `json:"id,string,omitempty"` Name string `json:"name,omitempty"` }
これにより、JSON 値が文字列であっても、「id」フィールドを int64 としてアンマーシャリングできます。
注意することが重要です。文字列タグ付きフィールドにomitEmptyを指定すると、マーシャリングプロセスにのみ影響し、アンマーシャリングプロセスには影響しません。これは、たとえ ,string,omitempty でタグ付けされていたとしても、空の文字列を int64 フィールドにアンマーシャリングできないことを意味します。
以上がJSON 文字列を Int64 Go 値にアンマーシャリングする方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。