首頁 >後端開發 >Golang >當 JSON 字段是字串而不是整數時,如何解組?

當 JSON 字段是字串而不是整數時,如何解組?

DDD
DDD原創
2024-11-12 17:33:02938瀏覽

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

當JSON 欄位為字串而不是整數時如何處理Unmarshal 錯誤

處理JSON 資料時,可能會遇到JSON 欄位表示為字串的情況而欄位表示為字串的情況不是整數,導致JSON Unmarshal 失敗。當 JavaScript(無法很好地處理 int64 值)對 JSON 資料進行編碼時,就會出現此問題。

考慮以下結構:

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

當您使用標準Marshal 將此結構編組為JSON 時函數,然後使用jQuery 修改name 字段,然後將其發布回Go 處理程序,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 欄位的字串表示形式轉換為整數。

請注意,不建議在有 ,string 的欄位上設定 omitempty,因為空字串無法被解組為整數。

以上是當 JSON 字段是字串而不是整數時,如何解組?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn