如何从 ASP.NET 中的 json 反序列化基本类型(System.Runtime.Serialization.Json)

Posted

技术标签:

【中文标题】如何从 ASP.NET 中的 json 反序列化基本类型(System.Runtime.Serialization.Json)【英文标题】:How can I deserialize elementary types from json in ASP.NET(System.Runtime.Serialization.Json) 【发布时间】:2010-12-15 19:34:36 【问题描述】:

我有一个小问题。 当我将DataContractJsonSerializer 与复杂类型(自己的类型)一起使用时,它可以正常工作。但我必须从字符串中反序列化 TimeStamp 或 DateTime。所以我不能用 DataContract、DataMember 属性来标记这些类型。

我写了一些代码

string jsonedTS = "PT2M15S";

DataContractJsonSerializer jsonSerializer = new DataContractJsonSerializer(typeof(TimeSpan));
MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(jsonedTS));
try 
    result.Takes = (TimeSpan) jsonSerializer.ReadObject(ms);
 catch 
 ;

我发现了这个异常

“反序列化 System.TimeSpan 类型的对象时出错。遇到意外字符'P'。” System.Exception System.Runtime.Serialization.SerializationException

我的问题是 如何反序列化

【问题讨论】:

【参考方案1】:

您可以尝试使用 Json.Net 库 - 过去它对我们来说效果很好。

【讨论】:

以上是关于如何从 ASP.NET 中的 json 反序列化基本类型(System.Runtime.Serialization.Json)的主要内容,如果未能解决你的问题,请参考以下文章

如何在 asp.net 中反序列化 Json-Object

ASP.NET 中JSON 的序列化和反序列化

ASP.NET中JSON的序列化和反序列化

ASP.NET中JSON的序列化和反序列化

ASP.NET中JSON的序列化和反序列化

如何在 asp.net owin api 项目中启用 JSON.NET 序列化/反序列化跟踪?