为了账号安全,请及时绑定邮箱和手机立即绑定

Json.NET能否对流进行序列化/反序列化?

Json.NET能否对流进行序列化/反序列化?

RISEBY 2019-07-27 10:02:11
Json.NET能否对流进行序列化/反序列化?我听说Json.NET比DataContractJsonSerializer更快,想试一试......但我在JsonConvert上找不到任何采用流而不是字符串的方法。例如,为了在WinPhone上反序列化包含JSON的文件,我使用以下代码将文件内容读入字符串,然后反序列化为JSON。在我的(非常临时)测试中,使用DataContractJsonSerializer直接从流中反序列化似乎要慢4倍...// DCJSDataContractJsonSerializer dc = new DataContractJsonSerializer(typeof(Constants));Constants constants = (Constants)dc.ReadObject(stream);// JSON.NETstring json = new StreamReader(stream).ReadToEnd();Constants constants = JsonConvert.DeserializeObject<Constants>(json);我做错了吗?
查看完整描述

3 回答

?
蓝山帝景

TA贡献1843条经验 获得超7个赞

这在当前版本中不再有效,请参阅下面的正确答案(无需拒绝投票,这在旧版本中是正确的)。

使用JsonTextReader带有a 的类StreamReader或使用直接带有的JsonSerializer重载StreamReader

var serializer = new JsonSerializer();serializer.Deserialize(streamReader);


查看完整回答
反对 回复 2019-07-27
?
qq_笑_17

TA贡献1818条经验 获得超7个赞

public static void Serialize(object value, Stream s){
    using (StreamWriter writer = new StreamWriter(s))
    using (JsonTextWriter jsonWriter = new JsonTextWriter(writer))
    {
        JsonSerializer ser = new JsonSerializer();
        ser.Serialize(jsonWriter, value);
        jsonWriter.Flush();
    }}public static T Deserialize<T>(Stream s){
    using (StreamReader reader = new StreamReader(s))
    using (JsonTextReader jsonReader = new JsonTextReader(reader))
    {
        JsonSerializer ser = new JsonSerializer();
        return ser.Deserialize<T>(jsonReader);
    }}


查看完整回答
反对 回复 2019-07-27
  • 3 回答
  • 0 关注
  • 328 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信