我正在使用json在程序调用之间将数据存储在磁盘上,程序运行正常一段时间,但之后它在json解码中显示错误,"顶级值后无效字符'1'".
有谁能建议解决这个问题?
不要手动打开文件,而应考虑使用一些内置的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)
}
Run Code Online (Sandbox Code Playgroud)
加载你使用ioutil.ReadFile和的json数据也是如此json.Unmarshal.
当您将数据写入磁盘时,您是否确保传递os.O_TRUNC(或以其他方式截断文件)打开标志?如果没有,程序将正常工作,直到您编写一个比上一个更小的对象。但是如果看不到代码就很难调试它。