从文件.Net逐个反序列化对象

h7wcgrx3  于 2022-12-14  发布在  .NET
关注(0)|答案(1)|浏览(121)

我正在尝试从一个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();
            }
        }
    }
niwlg2el

niwlg2el1#

我最终找到了一种方法,通过在序列化过程中在每个对象之间使用自定义分隔符。然后对于反序列化,我简单地将json文件读取为字符串,直到我找到我的自定义分隔符,然后反序列化读取的字符串,所有这些都在一个循环中完成。这不是完美的答案,因为我在我的文件中打破了json格式,但在我的情况下,这不是一个约束。

相关问题