JSON アンマーシャリングでの Int64 フィールドの文字列入力の処理
JSON データを Go 値にアンマーシャリングすると、特に次の文字列表現が発生した場合に問題が発生することがあります。整数値。この記事では、文字列エンコードされた整数フィールドを使用して JSON データをアンマーシャリングするときに発生するエラー「json: 文字列を int64 型の Go 値にアンマーシャリングできません」の解決策について説明します。
問題ステートメント
アンケートの回答を表す次の Go 構造体を考えてみましょう:
type tySurvey struct { Id int64 `json:"id,omitempty"` Name string `json:"name,omitempty"` }
この例では、id フィールドは int64 として定義されています。 tySurvey を JSON にシリアル化し、クライアント側で操作するために送信した後、クライアントは名前フィールドを更新します。ただし、データ送信中に誤って id フィールドを文字列としてエンコードしてしまいます。
サーバー上で変更された JSON データを受信すると、元の tySurvey 構造体がアンマーシャリングされ、「json: 文字列をアンマーシャリングできません」というエラーが発生します。 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 サイトの他の関連記事を参照してください。