在没有第三方框架的情况下从HttpWebResponse反序列化JSON的方法

我试图避免依赖开源或第三方库(如Json.NET)来解析来自HttpWebResponse的传入JSON。 为什么? 因为更多地依赖开源框架来帮助实现,你的应用程序必须依赖这些依赖关系…我不喜欢我的应用程序依赖很多库,如果可能的话。 我可以使用像Enterprise Library这样的东西,因为它支持MS,但我正在使用更多的开源库。

无论如何,我试图找出解析.NET 3.5中传入的JSON服务器端的最佳方法。

我知道这会得到很多响应,我甚至使用.NET 3.5 JavaScriptSerializer将数据序列化为JSON,但现在我正试图找出最好和最简单的方法来做反向,不用了使用第三方/开源框架来帮助解决这个问题。

Microsoft推荐的JSON序列化程序DataContractJsonSerializer这个类存在于System.Runtime.Serialization程序集中

该示例演示了如何将JSON数据反序列化为对象。

 MemoryStream stream1 = new MemoryStream(); Person p2 = (Person)ser.ReadObject(stream1); 

要将Person类型的实例序列化为JSON,请首先创建DataContractJsonSerializer,然后使用WriteObject方法将JSON数据写入流。

 Person p = new Person(); //Set up Person object... MemoryStream stream1 = new MemoryStream(); DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(Person)); ser.WriteObject(stream1, p); 

更新:添加了助手类

这是一个示例助手类,可用于简单的To / From Json序列化:

 public static class JsonHelper { public static string ToJson(T instance) { var serializer = new DataContractJsonSerializer(typeof(T)); using (var tempStream = new MemoryStream()) { serializer.WriteObject(tempStream, instance); return Encoding.Default.GetString(tempStream.ToArray()); } } public static T FromJson(string json) { var serializer = new DataContractJsonSerializer(typeof(T)); using (var tempStream = new MemoryStream(Encoding.Unicode.GetBytes(json))) { return (T)serializer.ReadObject(tempStream); } } }