2012-06-12 7 views
7

Ich versuche, einen JSON-Stream in Go zu parsen. Ich habe ein vereinfachtes Beispiel erstellt:Json Parsing von int64 in gehen; Nullwerte

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

diese geben mir

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

ich ein Nullable-int64 in der sql package gefunden haben, aber json scheint es nicht zu handhaben zu können.

Gibt es einen nullbaren Int64-Typ, den Json verarbeiten kann? Wenn möglich, würde ich mit dem JSON Null in übersetzt werden, -1 oder MinValue.

Vielen Dank für Ihre Eingabe, Fabian

+0

Das nächste Mal kann das Beispiel auf 'var n int64' und' json.Unmarshal verkürzt werden ("2251799813685312", & n) ' –

+0

wollen nur, dass Sie wissen, getestet mit Go 1.1.2," null "sein kann Verwenden Sie mit Int-Typ – nvcnvn

Antwort

13

Nur eine *int64 verwenden. Ein Zeiger kann entweder null sein oder er kann auf einen int64 mit einem zugehörigen Wert zeigen, und er funktioniert gut mit Go's JSON-Paket.

+0

herrlich! Danke, daran habe ich nicht einmal gedacht: – kazamatzuri