我听说 Json.NET 比 DataContractJsonSerializer 更快,并且想尝试一下......
但我在 JsonConvert 上找不到任何采用流而不是字符串的方法。
例如,为了在 WinPhone 上反序列化包含 JSON 的文件,我使用以下代码将文件内容读取为字符串,然后反序列化为 JSON。在我的(非常临时的)测试中,它似乎比使用 DataContractJsonSerializer 直接从流中反序列化慢了 4 倍......
// 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);
我做错了吗?
当前版本的 Json.net 不允许您使用接受的答案代码。当前的替代方案是:
public static object DeserializeFromStream(Stream stream)
{
var serializer = new JsonSerializer();
using (var sr = new StreamReader(stream))
using (var jsonTextReader = new JsonTextReader(sr))
{
return serializer.Deserialize(jsonTextReader);
}
}
文档:从文件流反序列化 JSON http://www.newtonsoft.com/json/help/html/DeserializeWithJsonSerializerFromFile.htm
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)