ホームページ >バックエンド開発 >Golang >JSON フィールドが整数ではなく文字列の場合にアンマーシャルする方法

JSON フィールドが整数ではなく文字列の場合にアンマーシャルする方法

DDD
DDDオリジナル
2024-11-12 17:33:02933ブラウズ

How to Unmarshal JSON Fields When They Are Strings Instead of Integers?

JSON フィールドが整数ではなく文字列である場合にアンマーシャル エラーを処理する方法

JSON データを扱うとき、JSON フィールドが文字列として表される状況が発生することがあります。整数ではなく、JSON Unmarshal が失敗する原因となります。この問題は、int64 値を適切に処理できない JavaScript が JSON データをエンコードするときに発生します。

次の構造体を考慮してください:

type tySurvey struct {
    Id     int64       `json:"id,omitempty"`
    Name   string      `json:"name,omitempty"`
}

標準のマーシャルを使用してこの構造体を JSON にマーシャルする場合関数を作成し、Go ハンドラーにポストバックする前に jQuery で name フィールドを変更すると、id フィールドが文字列としてエンコードされる可能性があります。これにより、JSON を tySurvey 構造体にアンマーシャリングしようとするとエラーが発生します:

json: cannot unmarshal string into Go value of type int64

この問題を解決するには、JSON に ,string を追加することで、id フィールドを文字列からアンマーシャリングできるように指定できます。 tag:

type tySurvey struct {
    Id   int64       `json:"id,string,omitempty"` // Add ",string" to handle string values
    Name   string      `json:"name,omitempty"`
}

これにより、JSON Unmarshal が id フィールドの文字列表現を正常に変換できるようになります。 integer.

空の文字列は整数にアンマーシャリングできないため、,string を含むフィールドにomitemptyを設定することはお勧めできません。

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

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