ホームページ >バックエンド開発 >Golang >JSON 文字列を Int64 Go 値にアンマーシャリングする方法は?

JSON 文字列を Int64 Go 値にアンマーシャリングする方法は?

Barbara Streisand
Barbara Streisandオリジナル
2024-11-14 17:16:02532ブラウズ

How to Unmarshal JSON Strings into Int64 Go Values?

JSON 文字列を Int64 Go 値にアンマーシャリングする

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

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