2013-11-22 30 views
5

編組和解組JSON內容我有構造這樣在GoLang

{ 
    "method":"brute_force", 
    "bc":"select * from blah;", 
    "gc":[ 
    "select sum(year) from blah;", 
    "select count(*) from table;" 
     ] 
} 

我試圖寫一個圍棋程序可以讀取該文件與JSON內容進行操作的樣本JSON文件。

package main 
import (
    "fmt" 
    "encoding/json" 
    "io/ioutil" 
    ) 


type Response2 struct { 
    method string 
    bc string 
    gc []string 
} 

func main() { 
    file,_ := ioutil.ReadFile("config.json") 
    fmt.Printf("%s",string(file)) 

     res := &Response2{} 


     json.Unmarshal([]byte(string(file)), &res) 
     fmt.Println(res) 

     fmt.Println(res.method) 
     fmt.Println(res.gc) 

} 

res.method和res.gc不打印任何東西。我不知道發生了什麼問題。

回答

7
type Response2 struct { 
    method string 
    bc string 
    gc []string 
} 

字段的名稱必須是大寫,否則Json模塊將無法訪問它們(它們對您的模塊是私有的)。 您可以使用json標籤來指定字段和名稱之間的匹配

type Response2 struct { 
    Method string `json:"method"` 
    Bc string `json:"bc"` 
    Gc []string `json:"gc"` 
} 
+0

謝謝了。我以前知道這一點。但其奇怪的是,編譯器讓這樣的錯誤悄然通過。 – Rahul

+0

@Rahul不是編譯錯誤。語法是正確的。是語義上的,編譯器不能做太多的事情。 (ps。請接受答案:)) – fabrizioM

+0

作爲一個去noobie這是非常有幫助的。我將變量名稱與小寫的json相匹配。解組中沒有錯誤但沒有值。大容量它固定它! :) –