Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

json parsing of int64 in go; null values

Tags:

json

go

int64

I'm trying to parse a json stream in Go. I've created a simplified example:

 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)
 }

this will give me

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

I've found a nullable int64 in the sql package, but json doesn't seem to be able to handle it.

Is there a nullable int64 type that json can handle? If possible I'd be happy with the json null being translated to, -1 or MinValue.

Thank you for your input, Fabian

like image 997
kazamatzuri Avatar asked Jun 12 '12 13:06

kazamatzuri


2 Answers

Just use a *int64. A pointer can either be nil or it can point to an int64 with an associated value and they work fine with Go's JSON package.

like image 100
tux21b Avatar answered Nov 05 '22 19:11

tux21b


The https://github.com/guregu/null contains null.Int null.String etc. with corresponding JSON serialization/deserialization.

like image 1
dimus Avatar answered Nov 05 '22 18:11

dimus