사용이 단순 해 보이는하게 다른 버전입니다. 객체로 다시 정렬 할 수는 없지만. 이것은 클라이언트 측이나 다른 사람에게 보내는 경우에만 적용됩니다.
http://play.golang.org/p/vmm3temCUn
사용
output, err := json.Marshal(FileInfo{entry})
output, err := json.Marshal(FileInfoList{entries})
코드
type FileInfo struct {
os.FileInfo
}
func (f FileInfo) MarshalJSON() ([]byte, error) {
return json.Marshal(map[string]interface{}{
"Name": f.Name(),
"Size": f.Size(),
"Mode": f.Mode(),
"ModTime": f.ModTime(),
"IsDir": f.IsDir(),
})
}
type FileInfoList struct {
fileInfoList []os.FileInfo
}
//This is inefficient to call multiple times for the same struct
func (f FileInfoList) MarshalJSON() ([]byte, error) {
fileInfoList := make([]FileInfo, 0, len(f.fileInfoList))
for _, val := range f.fileInfoList {
fileInfoList = append(fileInfoList, FileInfo{val})
}
return json.Marshal(fileInfoList)
}