ホームページ > バックエンド開発 > Golang > JSON アンマーシャリングで Int64 フィールドの文字列入力を処理する方法

JSON アンマーシャリングで Int64 フィールドの文字列入力を処理する方法

Susan Sarandon
リリース: 2024-11-15 03:17:02
オリジナル
277 人が閲覧しました

How to Handle String Input for Int64 Fields in JSON Unmarshaling?

JSON アンマーシャリングでの Int64 フィールドの文字列入力の処理

JSON データを Go 値にアンマーシャリングすると、特に次の文字列表現が発生した場合に問題が発生することがあります。整数値。この記事では、文字列エンコードされた整数フィールドを使用して JSON データをアンマーシャリングするときに発生するエラー「json: 文字列を int64 型の Go 値にアンマーシャリングできません」の解決策について説明します。

問題ステートメント

アンケートの回答を表す次の Go 構造体を考えてみましょう:

type tySurvey struct {
    Id     int64            `json:"id,omitempty"`
    Name   string           `json:"name,omitempty"`
}
ログイン後にコピー

Inこの例では、id フィールドは int64 として定義されています。 tySurvey を JSON にシリアル化し、クライアント側で操作するために送信した後、クライアントは名前フィールドを更新します。ただし、データ送信中に誤って id フィールドを文字列としてエンコードしてしまいます。

サーバー上で変更された JSON データを受信すると、元の tySurvey 構造体がアンマーシャリングされ、エラー「json: 文字列をアンマーシャリングできません」が発生します。 Go 型の値int64."

解決策

解決策は、型定義に ,string を追加して JSON フィールド タグを変更することです。これは、整数値の文字列表現を受け入れるように json アンマーシャラーに指示します。

type tySurvey struct {
   Id   int64  `json:"id,string,omitempty"`
   Name string `json:"name,omitempty"`
}
ログイン後にコピー

,string オプションを使用すると、アンマーシャリング中に文字列エンコードされた整数値を対応する Go 値にシームレスに変換できます。

追加の考慮事項

に ,omitempty を指定する場合文字列でエンコードされた整数値の場合、空の文字列はデコードできないことに注意することが重要です。この制限により、omitempty はエンコード中にのみ使用されることが保証されます。

結論

JSON フィールド タグに ,string を追加すると、Go で文字列エンコードされた整数値を簡単にアンマーシャリングできるようになります。この手法は、フィールド型を不用意に変更する可能性のあるクライアント側のデータ操作に対応することで、データ処理を簡素化し、コードの堅牢性を強化します。

以上がJSON アンマーシャリングで Int64 フィールドの文字列入力を処理する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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