在 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中文网其他相关文章!