處理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中文網其他相關文章!