c# – 使用JSON.NET连续序列化列表

前端之家收集整理的这篇文章主要介绍了c# – 使用JSON.NET连续序列化列表前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试使用 JSON.NET将List序列化为C#中的文件.
我希望能够向列表中添加值并序列化该更改.

我不想再一次序列化列表,因为它可以变得非常大.

JSON.NET是可以的吗?

using (FileStream fs = File.Open(@"c:\list.json",FileMode.CreateNew))
using (StreamWriter sw = new StreamWriter(fs))
using (JsonWriter jw = new JsonTextWriter(sw))
{
    jw.Formatting = Formatting.Indented;

    JsonSerializer serializer = new JsonSerializer();
    serializer.Serialize(jw,list);
}

这样,只能对整个列表进行“重新序列化”,而不是对文件添加更改.

解决方法

在许多格式(包括json和xml)中,文档最后都是语义关闭; “追加”需要通过这种方式进行反向跟踪.在其他情况下,文件中可能存在需要更改的长度前缀数据.在任何一种情况下,只有在列表是文件中的最后一个(或唯一的)事物时才会合理地工作 – 在一般情况下不是安全的假设,因此序列化程序通常不包括对“在末尾追加”的支持.事实.

因此,我的默认答案是:

either reserialize the entire list,or construct some mechanism of “framing” that allows you to store (and subsequently merge) multiple completely independent fragments (without mutating / extending – just add an extra frame)

请注意,某些格式支持追加;例如,协议缓冲区故意不包括文档关闭/长度前导码 – 它是附加片段=== merge的设计的特定功能,对于列表意味着:添加项目.然而,这不是json.

猜你在找的C#相关文章