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

我有一个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,以便可以将其用于进一步处理。我在这里做错了什么?


摇曳的蔷薇
浏览 303回答 2
2回答

慕桂英546537

由于json包使用反射来剖析您的结构,因此它只能看到exported的字段。您的所有字段名称均以小写字母开头,因此不会导出。更改名称以大写字母开头,我怀疑它将开始为您服务。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go