Vis*_*ons 6 c# serialization 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);
}
Run Code Online (Sandbox Code Playgroud)
这样,只能对整个列表进行"重新序列化",而不是对文件添加更改.
在许多格式(包括json和xml)中,文档最后都是语义关闭; "追加"需要通过这种方式进行反向跟踪.在其他情况下,可能有长度前缀的数据太多,需要改变文件前面.在任何一种情况下,只有在列表是文件中的最后一个(或唯一的)事物时才会合理地工作 - 在一般情况下不是安全的假设,因此序列化程序通常不包括对"在末尾追加"的支持.事实.
因此,我的默认答案是:
重新整理整个列表,或构建一些"框架"机制,允许您存储(并随后合并)多个完全独立的片段(无需改变/扩展 - 只需添加一个额外的帧)
注意,有些格式不支持追加; 例如,协议缓冲区故意不包括文档关闭/长度前导码 - 它是附加片段=== merge的设计的特定功能,对于列表意味着:添加项目.然而,这不是json.
| 归档时间: |
|
| 查看次数: |
275 次 |
| 最近记录: |