Golang:json.Unmarshal没有正确返回数据
发布时间:2020-12-16 09:28:44 所属栏目:大数据 来源:网络整理
导读:我有一个json文件(themes / snow / theme.json) { Name:'snow',Bgimage:'background.jpg',Width:600,Height:400,Itemrotation:'20,40',Text:{ Fontsize:12,Color:'#ff00ff',Fontfamily:'verdana',Bottommargin:20 },Decoration:[ { Path:'abc.jpg',X:2,Y:4,R
我有一个json文件(themes / snow / theme.json)
{ Name:'snow',Bgimage:'background.jpg',Width:600,Height:400,Itemrotation:'20,40',Text:{ Fontsize:12,Color:'#ff00ff',Fontfamily:'verdana',Bottommargin:20 },Decoration:[ { Path:'abc.jpg',X:2,Y:4,Rotation:0 },{ Path:'def.png',X:4,Y:22,Rotation:10 } ] } 我有一个解析json数据的文件 package main import ( "fmt" "os" "encoding/json" "io/ioutil" "log" ) const themeDirectory = "themes" const themeJsonFile = "theme.json" type TextInfo struct { Fontsize int Color string Fontfamily string Bottommargin int } type DecoInfo struct { Path string X int Y int Rotation int } type ThemeInfo struct { Name string Bgimage string Width int Height int Itemrotation string Text textInfo Decoration []decoInfo } func main() { var tinfo = parseTheme("snow") //use tinfo to build graphics } func parseTheme(themename string) themeInfo { abspath,_ := os.Getwd() filename := abspath + "/" + themeDirectory + "/" + themename + "/" + themeJsonFile //Check this file exists if _,error := os.Stat(filename); error != nil { if os.IsNotExist(error) { log.Fatal(filename + " does not exist") os.Exit(1) } } filebyte,error := ioutil.ReadFile(filename) if error != nil { log.Fatal("Could not read file " + filename + " to parse") os.Exit(1) } var t themeInfo json.Unmarshal(filebyte,&t) fmt.Println(t) return t } 你可以看到我在结束前有2行 fmt.Println(t) 我不知道为什么打印 { 0 0 {0 0} []} 我希望它能以一种有用的方式返回我的themeInfo,这样我就可以用它来进一步处理.我在这里做错了什么? 解决方法
您的JSON无效. JavaScript允许单引号; JSON
does not.此外,对象键必须双引号:
Valid: { "name": "Simon" } Invalid: { name: "Simon" } { 'name': "Simon" } { "name": 'Simon' } 如果用双引号包装JSON键和值,您将看到预期的输出: {snow background.jpg 600 400 20,40 {12 #ff00ff verdana 20} [{abc.jpg 2 4 0} {def.png 4 22 10}]} 例如, const sampleTheme = `{ "Name":"snow","Bgimage":"background.jpg","Width":600,"Height":400,"Itemrotation":"20,40","Text":{ "Fontsize":12,"Color":"#ff00ff","Fontfamily":"verdana","Bottommargin":20 },"Decoration":[ { "Path":"abc.jpg","X":2,"Y":4,"Rotation":0 },{ "Path":"def.png","X":4,"Y":22,"Rotation":10 } ] }` 有关完整计划,请参阅:http://play.golang.org/p/SLhaLbJcla (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |