「トップレベル値の後の無効な文字「1」」JSONの非整列化

go json
「トップレベル値の後の無効な文字「1」」JSONの非整列化

私はjsonを使用してプログラム呼び出し間でデータをディスクに保存していますが、プログラムはしばらくの間正常に実行されますが、その後jsonデコードでエラーが表示されます。

誰でもこの問題の解決策を提案できますか?

  6  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データの読み込みにも当てはまります。

5


データをディスクに書き込むとき、オープンフラグに os.O_TRUNC(またはファイルを切り捨てる)を必ず渡していますか? そうでない場合、最後よりも小さいオブジェクトを書き込むまでプログラムは正常に動作します。 しかし、コードを見ずにデバッグすることは困難です。

3


タイトルとURLをコピーしました