2010-07-22 97 views
3

我通过NetWorkStream将序列化对象发送到另一台计算机,在接收端我想反序列化这些对象。使用JSON.Net从NetworkStream反序列化或解析JSON

当我通过NetworkStream接收数据时,我将发送很多连续的对象,我怎么知道第一个JSON文档何时结束以便让JSON.NET从接收的字符串中解析文档?

或者更好的是,有没有什么办法让Json.NET直接从NetworkStream中读取和反序列化/解析生成的JSON文档?

让我知道 问候

阿尔伯特

回答

3

如果你实现一些自定义的协议,你可以发送一个标记,以表明当前对象端,使客户端可以反序列化,并把它添加到一个结果列表。另一种选择是读取整个流并一次反序列化整个数组,这当然会消耗更多的内存。

+0

我的意思是不发送任何特殊的标记,只是JSON对象。 – aattia 2010-07-22 21:23:45

+1

JSON反序列化器需要整个JSON字符串才能成功执行反序列化,所以如果您想实现这一点,您需要一个标记或等待整个流被读取。你可以尝试实现一些启发式算法,例如计算开头数'{'并匹配相应的结束'}以确定当前对象结束的位置,但这对于任何JSON字符串可能不是一件容易的任务。 – 2010-07-22 21:40:43

+0

从TextStream中读取时,JSON.NET需要做类似的工作,如果我从TextStream中解析出JSON文档,当文档结束时没有标记告诉JSON.NET。 因此,就像JSON.NET解析文本流中的文档,是否有一种方法可以为网络流执行相同的操作,因为两者都是流? – aattia 2010-07-22 22:06:20