为了账号安全,请及时绑定邮箱和手机立即绑定

Golang:json.Unmarshal没有正确返回数据

Golang:json.Unmarshal没有正确返回数据

Go
摇曳的蔷薇 2021-05-15 10:09:15
我有一个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 mainimport (    "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,以便可以将其用于进一步处理。我在这里做错了什么?
查看完整描述

2 回答

?
慕桂英546537

TA贡献1848条经验 获得超10个赞

由于json包使用反射来剖析您的结构,因此它只能看到exported的字段。您的所有字段名称均以小写字母开头,因此不会导出。更改名称以大写字母开头,我怀疑它将开始为您服务。


查看完整回答
反对 回复 2021-05-17
  • 2 回答
  • 0 关注
  • 302 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信