json - 编码(marshal)返回我的结构的空 json

标签 json go marshalling

<分区>

我正在编写将轨道扫描到结构中以便将其导出到 json 的代码。

目前,我的代码使用 ScanDir 函数精细地扫描一个目录,但是当我尝试编码我的结构时它只返回 {}

// file's struct
type Fic struct {
    nom     string    `json:"fileName"`
    lon     int64     `json:"size"`
    tim     time.Time `json:"lastFileUpdate"`
    md5hash []byte    `json:"md5"`
}

// folder's struct
type Fol struct {
    subFol []Fol     `json:"listFolders"`
    files  []Fic     `json:"listFiles"`
    nom    string    `json:"folderName"`
    tim    time.Time `json:"lastFolderUpdate"`
}

func main() {
    var root Fol
    err := ScanDir("./folder", &root)   // scan a folder and fill my struct
    check(err)
    b, err := json.Marshal(root)
    check(err)
    os.Stdout.Write(b)
}

func check(err error) {
if err != nil {
    fmt.Fprintf(os.Stderr, "Fatal error : %s", err.Error())
    os.Exit(1)
}

最佳答案

为了编码和解码 json,结构的字段/属性需要公开。要公开结构的字段/属性,它应该以大写字母开头。在您的所有字段中都是小写。

type Fic struct {
    Nom     string    `json:"fileName"`
    Lon     int64     `json:"size"`
    Tim     time.Time `json:"lastFileUpdate"`
    Md5hash []byte    `json:"md5"`
}

// folder's struct
type Fol struct {
    SubFol []Fol     `json:"listFolders"`
    Files  []Fic     `json:"listFiles"`
    Nom    string    `json:"folderName"`
    Tim    time.Time `json:"lastFolderUpdate"`
}

关于json - 编码(marshal)返回我的结构的空 json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34108129/

相关文章:

javascript - 在 express.js 中循环遍历 json 数据

json - 如何获取服务器从reqwest http调用发送回的数据?

multithreading - 写入CSV时如何解决 “short write”错误

go - 如何避免使用-run标志运行特定测试而不跳过?

c++ - 从 dbus xml 生成文件时,如何告诉 qmake 包含标题?

c# - 带输出参数的 PInvoking 函数

来自 JSON 数组的 mySQL WHERE IN

javascript - Jquery Ajax 请求不起作用

go - 这个函数是否可能导致 goroutine 泄漏

java - 如何通过 jaxb 从生成的 XML 中删除不需要的元素