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

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

Susan Sarandon
Susan Sarandonオリジナル
2024-11-15 03:17:02194ブラウズ

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"`
}

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

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