Can Json.NET serialize / deserialize to / from a stream?(Json.NET 可以对流进行序列化/反序列化吗?)
问题描述
听说Json.NET比DataContractJsonSerializer快,想试一试……
I have heard that Json.NET is faster than DataContractJsonSerializer, and wanted to give it a try...
但我在 JsonConvert 上找不到任何采用流而不是字符串的方法.
But I couldn't find any methods on JsonConvert that take a stream rather than a string.
以在WinPhone上反序列化包含JSON的文件为例,我使用以下代码将文件内容读入字符串,然后反序列化为JSON.在我的(非常临时的)测试中,它似乎比使用 DataContractJsonSerializer 直接从流中反序列化慢了大约 4 倍......
For deserializing a file containing JSON on WinPhone, for example, I use the following code to read the file contents into a string, and then deserialize into JSON. It appears to be about 4 times slower in my (very ad-hoc) testing than using DataContractJsonSerializer to deserialize straight from the stream...
// DCJS
DataContractJsonSerializer dc = new DataContractJsonSerializer(typeof(Constants));
Constants constants = (Constants)dc.ReadObject(stream);
// JSON.NET
string json = new StreamReader(stream).ReadToEnd();
Constants constants = JsonConvert.DeserializeObject<Constants>(json);
我做错了吗?
推荐答案
更新: 这在当前版本中不再有效,请参阅 下方获取正确答案(无需投票,这在旧版本上是正确的).
UPDATE: This no longer works in the current version, see below for correct answer (no need to vote down, this is correct on older versions).
将 JsonTextReader 类与 StreamReader 一起使用,或直接使用采用 StreamReader 的 JsonSerializer 重载:
Use the JsonTextReader class with a StreamReader or use the JsonSerializer overload that takes a StreamReader directly:
var serializer = new JsonSerializer();
serializer.Deserialize(streamReader);
这篇关于Json.NET 可以对流进行序列化/反序列化吗?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:Json.NET 可以对流进行序列化/反序列化吗?
基础教程推荐
- 是否可以在 asp classic 和 asp.net 之间共享会话状态 2022-01-01
- 在 VS2010 中的 Post Build 事件中将 bin 文件复制到物 2022-01-01
- 首先创建代码,多对多,关联表中的附加字段 2022-01-01
- 从 VS 2017 .NET Core 项目的发布目录中排除文件 2022-01-01
- 全局 ASAX - 获取服务器名称 2022-01-01
- 经典 Asp 中的 ResolveUrl/Url.Content 等效项 2022-01-01
- 将事件 TextChanged 分配给表单中的所有文本框 2022-01-01
- JSON.NET 中基于属性的类型解析 2022-01-01
- 如何动态获取文本框中datagridview列的总和 2022-01-01
- 错误“此流不支持搜索操作"在 C# 中 2022-01-01
