“顶级值后无效字符'1'”解组JSON

时间:2010-07-03 09:47:46

标签: go json

我使用json在程序调用之间将数据存储在磁盘上,程序运行正常一段时间,但之后它在json解码中显示错误,“顶级值后无效字符'1'”。

有人能建议解决这个问题吗?

2 个答案:

答案 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.ReadFilejson.Unmarshal加载json数据同样如此。

答案 1 :(得分:3)

将数据写入磁盘时,是否确保在打开的标志中传递os.O_TRUNC(或以其他方式截断文件)?如果没有,程序将正常工作,直到你写一个小于最后一个的对象。但是如果没有看到它就很难调试代码。