2015-12-05 39 views
0

我正在研究一個代碼,掃描彙編到一個結構體,以便將其導出到JSON。元帥返回我的結構的空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) 
} 
+1

[圍棋json.Marshal(結構)返回 「{}」]的可能的複製(http://stackoverflow.com/questions/26327391/go-json-marshalstruct-returns) –

回答

4

爲了編組和解組json,結構的fields/property需要是公共的。要使結構體的字段/屬性公開,它應該以大寫字母開頭。在你所有的領域都是小寫。

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"` 
} 
+0

謝謝你,它的工作原理! :) – kindermoumoute

+0

哇,這很微妙。 –