Pos*_*Guy 2 c# asp.net serialization json datacontractjsonserializer
我试图避免依赖开源或第三方库(如Json.NET)来解析来自HttpWebResponse的传入JSON.为什么?因为越来越依赖开源框架来帮助实现,你的应用程序必须依赖这些依赖关系...我不喜欢我的应用程序在许多库中依赖于很多原因,如果可能的话.我可以使用像Enterprise Library这样的东西,因为它得到了MS的支持,但是我正在使用更多的开源库.
无论如何,我试图找出在.NET 3.5中解析传入JSON服务器端的最佳方法.
我知道这会得到很多响应,我甚至使用.NET 3.5 JavaScriptSerializer将数据序列化为JSON,但现在我正试图找出最好和最简单的方法来做反向,不用再做了使用第三方/开源框架来帮助实现这一目标.
Wal*_*eza 10
在微软推荐的JSON序列化是DataContractJsonSerializer在内部存在这个类System.Runtime.Serialization总成
该示例演示了如何将JSON数据反序列化为对象.
MemoryStream stream1 = new MemoryStream();
Person p2 = (Person)ser.ReadObject(stream1);
Run Code Online (Sandbox Code Playgroud)
要将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);
Run Code Online (Sandbox Code Playgroud)
更新:添加了助手类
这是一个示例助手类,可用于简单的To/From Json序列化:
public static class JsonHelper
{
public static string ToJson<T>(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<T>(string json)
{
var serializer = new DataContractJsonSerializer(typeof(T));
using (var tempStream = new MemoryStream(Encoding.Unicode.GetBytes(json)))
{
return (T)serializer.ReadObject(tempStream);
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5596 次 |
| 最近记录: |