JSONファイルをデシリアライズして約1GBの問題が発生しました。私は、次のコードを実行すると、私はメモリ不足の例外のうちを取得:例外がNewtonsoft.Json - 大きなオブジェクトを直列化解除する際のメモリ不足例外
Newtonsoft.Json.Linq.JTokenWriter.WriteValue(Int64 value)
によってスローされます
using (FileStream sr = new FileStream("myFile.json", FileMode.Open, FileAccess.Read))
{
using (StreamReader reader = new StreamReader(sr))
{
using (JsonReader jsReader = new JsonTextReader(reader))
{
JsonSerializer serializer = new JsonSerializer();
dataObject = serializer.Deserialize<T>(jsReader);
}
}
}
連載がうまく機能し、ここで私は
using (StreamWriter reader = new StreamWriter("myFile.json"))
{
using (JsonReader jsWriter = new JsonWriter(reader))
{
JsonTextWriter jsonWriter = new JsonTextWriter(jsWriter) { Formatting = Formatting.Indented };
JsonSerializer ser = new JsonSerializer();
ser.Serialize(jsonWriter, dataObject, dataObject.GetType());
jsonWriter.Flush();
}
}}
を使用しているコードがあります
デシリアライズで何か問題がありますか?大きなjsonオブジェクトをデシリアライズする方法を提案する手助けができますか?
おかげ
1)[あなたは、64ビットアプリケーションとして動作していることを確認してください](https://msdn.microsoft.com/en- us/library/ms241064%28v = vs.110%29.aspx)。 32ビットモードで実行している場合は、おそらくメモリが不足している可能性があります。 2)メモリ不足例外の完全なトレースバックは何ですか?あなたは 'JsonConverter'でメモリ不足になっていますか? – dbc
私は32ビットアプリケーションを実行していますが、メモリ不足でdataObject = serializer.Deserializeという行を実行しています(jsReader);例外をスローする関数はNewtonsoft.Json.Linq.JTokenWriter.WriteValue(Int64値) –
cmarlowe88