1
我試圖分析在golang一個節點的package.json文件,我有以下結構:拆封頂層JSON對象
type packageJson struct {
scripts map[string]interface{} `json:"scripts"`
dependencies map[string]interface{} `json:"dependencies"`
devDependencies map[string]interface{} `json:"devDependencies"`
}
...
var content packageJson
if err := json.Unmarshal(b, &content); err != nil {
return err
}
當我解析但是包文件的結構沒有被填充(雖然沒有收到錯誤)。我懷疑這是因爲內容本身就是一個對象(即:{ "scripts":"...", ... }
),Unmarshal方法想將其轉換爲map[string]interface{}
。任何建議如何解決這個「問題」?我試圖創建一個包裝結構,並使用jpath
但無濟於事。謝謝!
注:我能做到這一點
var content map[string]interface{}
...
if val, ok := content["scripts"]; !ok { ... }
,但我想如果可能的話,以避免它。
我認爲知名度並不重要,但我想這是因爲Unmarshal需要一個指針並且超出範圍。它現在有效!謝謝。 – morcmarc 2014-10-31 16:37:15
這是因爲未導出的字段不能被任何其他包訪問,即使是反射。 – Matt 2014-10-31 18:23:04
可見性至關重要,因爲unmarshaller使用反射,只是不能訪問私人領域。這裏有一些關於這個問題的討論:http://stackoverflow.com/questions/11126793/golang-json-and-dealing-with-unexported-fields – 2014-10-31 20:42:00