我正在尝试从一个json文件中反序列化一个重对象列表。我不想用传统的方式反序列化它,比如直接反序列化到一个列表,因为这会暴露给我一个OutOfMemory异常。所以我正在寻找一种方法来逐个处理对象,以便将它们逐个存储在数据库中,并且是内存安全的。
我已经处理了序列化,它工作得很好,但是我在反序列化方面遇到了一些困难。
你知道吗?
先谢了
// Serialization
using (var FileStream = new FileStream(DirPath + "/TPV.Json", FileMode.Create))
{
using (var sw = new StreamWriter(FileStream))
{
using (var jw = new JsonTextWriter(sw))
{
jw.WriteStartArray();
using (var _Database = new InspectionBatimentsDataContext(TheBrain.DBClient.ConnectionString))
{
foreach (var TPVId in TPVIds)
{
var pic = (from p in _Database.TPV
where Operators.ConditionalCompareObjectEqual(p.Release, TPVId.Release, false) & Operators.ConditionalCompareObjectEqual(p.InterventionId, TPVId.InterventionId, false)
select p).FirstOrDefault;
var ser = new JsonSerializer();
ser.Serialize(jw, pic);
jw.Flush();
}
}
jw.WriteEndArray();
}
}
}
1条答案
按热度按时间niwlg2el1#
我最终找到了一种方法,通过在序列化过程中在每个对象之间使用自定义分隔符。然后对于反序列化,我简单地将json文件读取为字符串,直到我找到我的自定义分隔符,然后反序列化读取的字符串,所有这些都在一个循环中完成。这不是完美的答案,因为我在我的文件中打破了json格式,但在我的情况下,这不是一个约束。