如何解决Json.NET 可以对流进行序列化/反序列化吗??
这在当前版本中不再有效,请参阅下面的正确答案( )。
当前版本的 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);
}
}
使用JsonTextReader
带有 a 的类StreamReader
或使用直接JsonSerializer
采用 a
的重载:StreamReader
var serializer = new JsonSerializer();
serializer.Deserialize(streamReader);
解决方法
听说 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);
我做错了吗?
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。