2013-11-22 31 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相匹配。解组中没有错误但没有值。大容量它固定它! :) –