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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
