gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 21:33:46 25 4
gpt4 key购买 nike

我正在尝试使用 JSON.NET 将列表序列化为 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)

请注意,某些格式确实支持追加;例如,protocol buffers 故意不包含文档关闭/长度前导码 - 它是设计的一个特定特征,附加片段 === 合并,对于列表意味着:添加一个项目。但是,这不是 json。

关于c# - 使用 JSON.NET 连续序列化列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24865573/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com