go中int64的json解析;空值

go中int64的json解析;空值,json,go,int64,Json,Go,Int64,我正在尝试解析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() {

我正在尝试解析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
我在中找到了一个可为null的int64,但json似乎无法处理它

json是否可以处理可为null的int64类型?如果可能的话,我很乐意将json null转换为-1或MinValue

谢谢你的意见,
费边

只要使用
*int64
。指针可以是nil,也可以指向具有关联值的int64,它们与Go的JSON包配合使用。

包含null.Int null.String等,并具有相应的JSON序列化/反序列化。

!谢谢,我甚至没有想到这一点:/这是Golang社区推荐的方法吗?接下来不会有问题,因为接下来的任何其他数据转换都需要检查nil类型。这也会减慢速度。例:你有field1和field2。您希望通过连接field1和field2来创建field3。如果field2为nil,则取消。下一次,示例可以缩短为
var n int64
json.Unmarshal(“2251799813685312”,&n)
只想让你们知道,使用Go 1.1.2测试,“null”可以与int类型一起使用