将JSON对象解析为c#

我正在尝试使用此链接中的示例http://sharpdevpt.blogspot.com/2009/10/deserialize-json-on-c.html?showComment=1265045828773#c2497312518008004159

但我的项目不会使用JavaScriptConvert.DeserializeObject进行编译,例子说这来自.net库有谁知道哪一个?

我知道下面的例子使用Newtonsoft.Json ….

.NET中的Javascript Serializer是System.Web.Script.Serialization命名空间的一部分。

这是我用来反序列化字符串的示例扩展方法:

 public static T FromJSON(this string json) { JavaScriptSerializer jss = new JavaScriptSerializer(); return jss.Deserialize(json); } 

由于这是string的扩展方法,因此您可以在任何字符串上使用它。

 MyCustomType = myJsonString.FromJSON(); 

您可能还想看看JSON.NET ,这是一个免费的开源项目,它比内置的.NET JSON序列化器快得多,并且它也可以在.NET 1.x和2.0,如果你仍然需要支持那些。

这确实是一个非常了不起的软件! 强烈推荐。

您发布的链接来自我的博客,使用它的问题是什么? 随时回复博客文章或邮寄给我ricmrodrigues@gmail.com。 我已经使用了一段时间,它工作正常。

关于嵌入在.Net Framework中的讨论过的JavascriptSerializer,问题是这个序列化程序没有序列化到/来自List <>。 如果你想这样做,你需要使用Newtonsoft.JSON来做到这一点,因为.NET Framework根本不支持它。 并且由于这主要用于将JSON返回到某些客户端脚本,用于搜索或其他什么,因此List <>是必须的。

但是使用那段代码你不能反序列化/序列化List <>,这在你处理结果集时非常方便,并且比.NET的内置.JavascriptSerializer更高效,所以Newtonsoft.Json是最好的选项:

对于自定义类型的单个对象:

 classtype myDeserializedObj = (classtype)JavaScriptConvert.DeserializeObject(jsonString, typeof(classtype)); 

对于自定义类型的对象列表:

 List myDeserializedObjList = (List)Newtonsoft.Json.JsonConvert.DeserializeObject(jsonString, typeof(List)); 

问题是Newtonsoft.Json无法处理字符串中的嵌入式正则表达式。 它认为\(这是一个糟糕的转义序列。这引出了一个问题:牛顿软件在引用的字符串中查看它是什么业务?“……”应该告诉转换器这些东西是原样的。

有关反序列化的简单方法http://blogs.msdn.com/rakkimk/archive/2009/01/30/asp-net-json-serialization-and-deserialization.aspx

 JavaScriptSerializer js = new JavaScriptSerializer(); Person p2 = js.Deserialize(str);