使用.net 3.5的DataContractJsonSerializer进行JSON Serialization
来源:互联网 发布:关于淘宝诈骗的视频 编辑:程序博客网 时间:2024/05/21 12:51
(转)使用.net 3.5的DataContractJsonSerializer进行JSON Serialization
(2011-08-30 18:25:39)使用.net 3.5的DataContractJsonSerializer进行JSON Serialization
注意:需要引入命名空间
using System.Runtime.Serialization;
using System.Runtime.Serialization.Json;(这个.NET Framework 3.5需要添加引用:System.Web.Extensions.dll)
备注:关于另一个json操作类JavaScriptSerializer需要引入命名空间
using System.Web.Script.Serialization;(这个需要添加引用:System.Web.Extensions.dll )
这里举个例子来看,创建一个对象是Person它有FirstName和LastName属性。
- public
class Person - {
-
Person() { } -
Person( stringfirstname, stringlastname) -
{ -
= firstname; -
= lastname; -
} -
string FirstName get;{ set; } -
string LastName get;{ set; } - }
现在,为了能够让我们的对象通过使用DataContractJsonSerializ
- public
class Person - {
-
Person() { } -
Person( stringfirstname, stringlastname) -
{ -
= firstname; -
= lastname; -
} -
string FirstName get;{ set; } -
string LastName get;{ set; } -
- }
-
- ///
Marked with the DataContact Attribute - [DataContract]
- public
class Person - {
-
Person() { } -
Person( stringfirstname, stringlastname) -
{ -
= firstname; -
= lastname; -
} -
-
[DataMember] -
string FirstName get;{ set; } -
-
[DataMember] -
string LastName get;{ set; } - }
下面的代码是实现Person的serialize。
- Person
myPerson new= Person( "Chris","Pietschmann"); -
- ///
Serialize to JSON - System.Runtime.Serialization.Json.DataContractJsonSerializ
er newserializer = System.Runtime.Serialization.Json.DataContractJsonSerializ er(myPerson.GetType()); - MemoryStream
ms new= MemoryStream(); - serializer.WriteObject(ms,
myPerson); - string
json = Encoding.Default.GetString(ms.ToArray());
如果我们使用的Person对象添加了Serializable属性,那么序列化后的结果如下:
/// Result of Person class marked as Serializable
{"<FirstName>k__BackingField":"Chris","<LastName>k__BackingField":"Pietschmann"}
如果是DataContract属性最后结果为:
/// Result of Person class marked as DataContract with
/// each Property marked as DataMember
{"FirstName":"Chris","LastName":"Pietschmann"}
今天做个东西需要用到json序列化,正好用到这个东西。不过熟悉generics的话,使用了generics的帮忙让序列化和反序列化都那么容易了。
贴出他的代码,希望大家能够看懂:
- using
System.Runtime.Serialization; - using
System.Runtime.Serialization.Json; -
- public
class JSONHelper - {
-
static string Serialize<T>(T obj) -
{ -
System.Runtime.Serialization.Json.DataContractJsonSerializ er serializer = System.Runtime.Serialization.Json.DataContractJsonSerializ er(obj.GetType()); -
MemoryStream ms = MemoryStream(); -
serializer.WriteObject(ms, obj); -
retVal = Encoding.Default.GetString(ms.ToArray()); -
retVal; -
} -
-
static T stringDeserialize<T>( json) -
{ -
T obj = Activator.CreateInstance<T>(); -
MemoryStream ms = MemoryStream(Encoding.Unicode.GetBytes(json)); -
System.Runtime.Serialization.Json.DataContractJsonSerializ er serializer = System.Runtime.Serialization.Json.DataContractJsonSerializ er(obj.GetType()); -
obj = (T)serializer.ReadObject(ms); -
ms.Close(); -
obj; -
} - }
-
- ///
Our Person object to Serialize/Deserialize to JSON - [DataContract]
- public
class Person - {
-
Person() { } -
Person( stringfirstname, stringlastname) -
{ -
= firstname; -
= lastname; -
} -
-
[DataMember] -
string FirstName get;{ set; } -
-
[DataMember] -
string LastName get;{ set; } - }
-
-
- ///
Sample code using the above helper methods - ///
to serialize and deserialize the Person object -
- Person
myPerson new= Person( "Chris","Pietschmann"); -
- //
Serialize - string
json = JSONHelper.Serialize<Person>(myPerson); -
- //
Deserialize - myPerson
= JSONHelper.Deserialize<Person>(json);
- 使用.net 3.5的DataContractJsonSerializer进行JSON Serialization
- 使用.net 3.5的DataContractJsonSerializer进行JSON Serialization
- 使用.net 3.5的DataContractJsonSerializer进行JSON Serialization
- .NET 3.5: 使用DataContractJsonSerializer进行JSON 序列化
- 关于C#使用DataContractJsonSerializer来进行JSON解析
- DataContractJsonSerializer进行Json的序列化和反序列化
- .net 3.5 DataContractJsonSerializer序列化及反序列化二(json格式化)
- .Net 3.5 用DataContractJsonSerializer实现Json序列和反序列
- C# 中使用JSON - DataContractJsonSerializer
- C# 中使用JSON - DataContractJsonSerializer
- C# 中使用JSON - DataContractJsonSerializer
- C# 中使用JSON -DataContractJsonSerializer
- C# 中使用JSON - DataContractJsonSerializer
- .net中解析json 之 DataContractJsonSerializer类
- .net中解析json 之 DataContractJsonSerializer类
- .net中解析json 之 DataContractJsonSerializer类
- .net中解析json 之 DataContractJsonSerializer类
- DataContractJsonSerializer .Net Framework3.5处理Json
- linux查看文件系统的使用空间和文件夹占用空间的命令
- Java内部类详解
- android应用性能测试——cpu的占用率
- Android图片加载
- Source Insight:Symbol not found
- 使用.net 3.5的DataContractJsonSerializer进行JSON Serialization
- shell脚本
- Core Motion 加速器的使用步骤
- 可选类型(?)与强制解析运算符(!)
- Struts2拦截器
- JAVA中关于链表的操作和基本算法
- 杭电 Problem 3788 ZOJ问题
- 图像增强算法实现--图像边缘提取
- split分割字符串时的一些特殊分隔符