【发布时间】:2011-03-11 09:48:10
【问题描述】:
我在程序调用之间使用json将数据存储在磁盘上,程序运行了一段时间,但之后它在json解码中显示错误,“顶级值后的无效字符'1'”。
谁能提出一些解决这个问题的方法?
【问题讨论】:
我在程序调用之间使用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)
}
在您使用 ioutil.ReadFile 和 json.Unmarshal 的地方加载 json 数据也是如此。
【讨论】:
当您将数据写入磁盘时,您是否确保在打开标志中传递os.O_TRUNC(或截断文件)?如果没有,程序将正常工作,直到您编写一个小于上一个的对象。但是不看代码很难调试。
【讨论】: