相关疑难解决方法(0)

Newtonsoft.Json - 反序列化大对象时内存不足异常

我有一个问题反序列化大约1GB的JSON文件.当我运行以下代码时,我得到一个内存不足异常:

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);
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

抛出异常

Newtonsoft.Json.Linq.JTokenWriter.WriteValue(Int64 value)
Run Code Online (Sandbox Code Playgroud)

序列化效果很好,这是我正在使用的代码

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();
    }
}}
Run Code Online (Sandbox Code Playgroud)

我在反序列化中做错了吗?你能帮忙建议一种反序列化大json对象的方法吗?

谢谢

c# serialization json exception out-of-memory

6
推荐指数
1
解决办法
9919
查看次数

标签 统计

c# ×1

exception ×1

json ×1

out-of-memory ×1

serialization ×1