-4
我嘗試讀取一個目錄,並從文件條目中創建一個JSON字符串。但是json.encoder.Encode()函數只返回空對象。爲了測試我有一個TMP目錄兩個文件:自己的結構數組的JSON編碼
test1.js test2.js
的圍棋程序是這樣的:
package main
import (
"encoding/json"
"fmt"
"os"
"path/filepath"
"time"
)
type File struct {
name string
timeStamp int64
}
func main() {
files := make([]File, 0, 20)
filepath.Walk("/home/michael/tmp/", func(path string, f os.FileInfo, err error) error {
if f == nil {
return nil
}
name := f.Name()
if len(name) > 3 {
files = append(files, File{
name: name,
timeStamp: f.ModTime().UnixNano()/int64(time.Millisecond),
})
// grow array if needed
if cap(files) == len(files) {
newFiles := make([]File, len(files), cap(files)*2)
for i := range files {
newFiles[i] = files[i]
}
files = newFiles
}
}
return nil
})
fmt.Println(files)
encoder := json.NewEncoder(os.Stdout)
encoder.Encode(&files)
}
而且它產生的是:
[{test1.js 1444549471481} {test2.js 1444549481017}]
[{},{}]
爲什麼是JSON字符串爲空?
JSON編碼需要像'Name'和'Timestamp' ** **導出字段名。這是重複的。編碼/ json明確聲明只有導出的字段是可解碼的。這在SO上至少有十次被問到。 – Volker