JSON.NET序列化和反序列化片段

时间:2011-06-04 06:07:00

标签: c# json.net

我有对象队列,我不断刷新文件以进行离线处理。每个对象类型都有自己的文件,我想使用JSON.NET来序列化对象。

所以假设我有一个Queue<LogInfo>,每次刷新它都会转到同一个文件。我一次序列化每个对象,并将它们附加到字符串构建器,用逗号分隔。所以我的文件看起来像。

{ "Id":1,"Name":"a"},
{ "Id":2,"Name":"b"},

现在,当我想要处理这些时,我在文件中读取,但在所有文本前面加上“[”,最后我附加一个“]”,以便JSON.NET可以将片段反序列化为列表LogInfo对象。

我意识到这可能不是JSON序列化程序的预期用途,但是有更好的方法吗?我是否可以逐个读取片段(序列化对象)而无需在那里破解[],或者告诉序列化器我给出的方法它以逗号分隔的一系列对象?

2 个答案:

答案 0 :(得分:1)

我宁愿鼓励使用更适合这种情况的序列化程序,例如由我们自己的protobuf-net创建的Marc Gravell,而不是试图强制提交JSON.NET。 Protobuf允许您将数据流式传输到文件中,并非常容易地将其流回。

您只是声明您期望列表与要求反序列化程序识别已提供列表。作为附带好处,由于协议缓冲区积极压缩,您生成的文件会更小。

答案 1 :(得分:0)

你做错了。只需将它们放在一个列表中,然后使用Json.NET对其进行序列化。每行一个对象不是有效的JSON文档,如果它就像你说的那样,你只需要一个列表。那你为什么不把它列为一个清单呢?