我使用json在程序调用之间将数据存储在磁盘上,程序运行正常一段时间,但之后它在json解码中显示错误,“顶级值后无效字符'1'”。
有人能建议解决这个问题吗?
答案 0 :(得分:5)
不要手动打开文件,而应考虑使用一些内置的IO函数。
import (
"io/ioutil"
"encoding/json"
)
...
func Save(myobj SomeType, filename string) (err error) {
var data []byte
if data, err = json.Marshal(myobj); err != nil {
return
}
return ioutil.WriteFile(filename, data)
}
使用ioutil.ReadFile
和json.Unmarshal
加载json数据同样如此。
答案 1 :(得分:3)
将数据写入磁盘时,是否确保在打开的标志中传递os.O_TRUNC
(或以其他方式截断文件)?如果没有,程序将正常工作,直到你写一个小于最后一个的对象。但是如果没有看到它就很难调试代码。