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