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

发布于 2024-09-08 09:31:27 字数 98 浏览 2 评论 0 原文

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

谁能建议解决这个问题?

I am using json to store data on disk between program calls, the program runs fine for some time, but after that it displays error in json decoding, "invalid character '1' after top-level value ".

Can anyone suggest some solution to this problem ?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

习惯成性 2024-09-15 09:31:27

考虑使用一些内置 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 数据也是如此。

Instead of doing the manual file opening, consider using some of the inbuilt IO functions.

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)
}

The same goes for loading of json data where you use ioutil.ReadFile and json.Unmarshal.

晨与橙与城 2024-09-15 09:31:27

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

When you write the data to disk, are you making sure to pass os.O_TRUNC (or otherwise truncate the file) in the open flags? If not, the program will work fine until you write an object smaller than the last. But it's hard to debug code without seeing it.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文