【问题标题】:"invalid character '1' after top-level value " unmarshaling JSON“顶级值后的无效字符'1'”解组JSON
【发布时间】:2011-03-11 09:48:10
【问题描述】:

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

谁能提出一些解决这个问题的方法?

【问题讨论】:

    标签: go 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.ReadFilejson.Unmarshal 的地方加载 json 数据也是如此。

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-03-16
        • 2017-03-05
        相关资源
        最近更新 更多