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

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

Barbara Streisand
リリース: 2024-11-14 17:16:02
オリジナル
531 人が閲覧しました

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート