9

我正在尝试在 Go 中解析一个 json 流。我创建了一个简化的示例:

 package main
 import (
    "encoding/json"
    "fmt"
 )

 var d = []byte(`{ "world":[{"data": 2251799813685312}, {"data": null}]}`)

 type jsonobj struct{ World []World }
 type World struct{ Data int64 }

 func main() {
    var data jsonobj
    jerr := json.Unmarshal(d, &data)
    fmt.Println(jerr)
 }

这会给我

go run testmin.go
json: cannot unmarshal null into Go value of type int64

我在sql 包中找到了一个可为空的 int64 ,但 json 似乎无法处理它。

是否有 json 可以处理的可为空的 int64 类型?如果可能的话,我会对将 json null转换为 -1 或 MinValue感到满意。

谢谢你的意见,法比安

4

2 回答 2

21

只需使用*int64. 指针可以为 nil,也可以指向具有关联值的 int64,它们可以与 Go 的 JSON 包一起正常工作。

于 2012-06-12T14:02:41.747 回答
0

https://github.com/guregu/null包含 null.Int null.String 等以及相应的 JSON 序列化/反序列化。

于 2020-11-22T22:51:47.967 回答