我正在尝试使用
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.