2012-06-12 15 views
7

मैं गो में एक जेसन स्ट्रीम पार्स करने की कोशिश कर रहा हूं। मैं एक सरल उदाहरण बना लिया है:int64 में 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) 
} 

यह मेरे sql package में एक नल int64

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

मैंने पाया दे देंगे, लेकिन json इसे संभाल करने में सक्षम होना प्रतीत नहीं होता।

क्या कोई निरर्थक int64 प्रकार है जो जेसन संभाल सकता है? यदि संभव हो तो मैं जेसन शून्य, -1 या मिनवैल्यू में अनुवादित होने से खुश हूं।

आपके इनपुट के लिए धन्यवाद, फैबियन

+0

अगली बार, उदाहरण को 'var n int64' और' json.Unmarshal ("2251799813685312", और n) को छोटा किया जा सकता है, ' –

+0

बस आप लोगों को जानना चाहते हैं, गो 1.1.2 के साथ परीक्षण किया गया है, "शून्य" हो सकता है int टाइप – nvcnvn

उत्तर

13

बस एक *int64 का उपयोग करें। एक सूचक या तो शून्य हो सकता है या यह एक संबंधित मान के साथ int64 को इंगित कर सकता है और वे गो के JSON पैकेज के साथ ठीक काम करते हैं।

+0

शानदार के साथ उपयोग करें! धन्यवाद, मैंने इसके बारे में भी सोचा नहीं था: / – kazamatzuri

संबंधित मुद्दे