2012-06-12 35 views
7

Tôi đang cố gắng phân tích cú pháp luồng json trong Go. Tôi đã tạo một ví dụ đơn giản:json phân tích cú pháp int64 đi; null giá trị

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

này sẽ cho tôi

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

Tôi đã tìm thấy một Int64 nullable trong sql package, nhưng json dường như không có khả năng xử lý nó.

Có loại int64 vô hiệu nào mà json có thể xử lý không? Nếu có thể tôi sẽ hài lòng với json null đang được dịch sang, -1 hoặc MinValue.

Cảm ơn bạn đã nhập vào của bạn, Fabian

+0

Lần sau, ví dụ có thể được rút ngắn thành 'var n int64' và' json.Unmarshal ("2251799813685312", & n) ' –

+0

chỉ muốn các bạn biết, được thử nghiệm với Go 1.1.2," null "có thể là sử dụng với loại int – nvcnvn

Trả lời

13

Chỉ cần sử dụng một *int64. Một con trỏ có thể là nil hoặc nó có thể trỏ đến một int64 với một giá trị liên quan và chúng hoạt động tốt với gói JSON của Go.

+0

lộng lẫy! Cảm ơn, tôi thậm chí không nghĩ về điều đó: / – kazamatzuri

Các vấn đề liên quan