私はいくつかの巨大な(2GB以上の)JSONファイルが,\n]
で終わっています。私は,\n
を削除してから]
に戻って追加する必要が大きなJSONファイルから最後の数文字を削除します
test.json
":{"value":false}}}}}},
]
:ここでは2ギガバイトJSONファイルの最後の25個の文字である、私のテストファイルの例です。最終行の最後の3文字。ファイル全体は3行で表示されます:前括弧と末尾括弧はそれぞれ独自の行にあり、JSON配列のすべての内容は2行目にあります。ファイルがあまりにも大きいため
string[0..-2]
:
は、私のような何かをメモリにストリーム全体をロードすることはできません。私は、Rubyのを含め、several approachesを試してみました:
chomp!(",\n]")
とUNIXの:
sed
どちらも私のJSONファイルへの変更をしませんでした。
ともなかったが:
ls -l
新旧ファイルのバージョンのバイトサイズが同じであったことを確認するために私が行って、最後の25個の文字を見ました。
これらのアプローチのいずれも機能していない理由を知ってもらえますか?
JSONファイルは、ある時点で文字列に変換されていない限り、最初にそのようなエンコーディングを持つべきではありません。 JSONファイルはどのように生成されましたか?ファイルでJSON.parseを実行するとどうなりますか? –
合意した、それは無効なjsonです、あなたは間違った問題を解決しています。 – rebroken
test.jsonは、有効な2GBのjsonファイルの最後の25文字です。 jsonの内容は有効なjsonです。ただし、json配列の最後の要素は、最後の末尾の括弧の前にコンマが付きます。 2GBのjsonファイルを投稿することはできませんでした。なぜならその内容は独自のものだからです。基本的な問題が何であるか、つまりファイルが非常に大きいときに最後の3文字を変更する方法を示したかったのです。 – areyoujokingme