我在反序列化一个约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);
}
}
}
异常由以下内容抛出
Newtonsoft.Json.Linq.JTokenWriter.WriteValue(Int64 value)
序列化很好用,这里是我使用的代码。
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对象的方法吗?
谢谢。
JsonConverter
中耗尽了内存?