在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: 無法將字串解組為Go value of type int64."
解決方案
解決方案在於透過將,string附加到類型定義來修改 JSON 欄位標籤。這指示 json 解組器接受整數值的字串表示形式:
type tySurvey struct { Id int64 `json:"id,string,omitempty"` Name string `json:"name,omitempty"` }
,string 選項允許在解組期間將字串編碼的整數值無縫轉換為對應的 Go 值。
其他注意事項
為字串編碼的整數值指定 ,omitempty 時,請務必注意空字串無法解碼。此限制可確保僅在編碼期間使用 omitempty。
結論
將 ,string 附加到 JSON 欄位標記可以輕鬆解組 Go 中的字串編碼整數值。該技術透過適應可能無意中更改欄位類型的客戶端資料操作,簡化了資料處理並增強了程式碼的穩健性。
以上是如何在 JSON 解組中處理 Int64 欄位的字串輸入?的詳細內容。更多資訊請關注PHP中文網其他相關文章!