在 Go 中,解析 JSON 流有時會導致複雜化,尤其是在處理整數和空值時。讓我們探討一下使用可空類型的常見問題及其解決方案。
問題:
解析包含整數的JSON 資料時,可能會遇到以下錯誤:
json: cannot unmarshal null into Go value of type int64
當JSON 中有可空整數時,會發生此錯誤,而標準Go JSON包裝無法處理該整數
解:
要解決此問題,請考慮使用指向整數的指標。指標可以是 nil(表示空值),也可以指向具有關聯值的整數。以下是如何實現它:
import ( "encoding/json" "fmt" ) var d = []byte(`{ "world":[{"data": 2251799813685312}, {"data": null}]}`) type jsonobj struct{ World []*int64 } type World struct{ Data *int64 } func main() { var data jsonobj jerr := json.Unmarshal(d, &data) if jerr != nil { fmt.Println(jerr) } for _, w := range data.World { if w == nil { fmt.Println("Got a null value") } else { fmt.Println(*w) } } }
在這個修改後的範例中:
解析JSON 時,它會正確處理數字和空整數值並相應地打印它們:
Got a null value 2251799813685312
這種方法提供了一種簡單有效的方法來處理可為空整數在Go 中解析JSON 流時。
以上是在 Go 中解組 JSON 時如何處理空整數值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!