首页 > Json的序列化和反序列化

Json的序列化和反序列化

1、引用命名空间:

using System.Runtime.Serialization;

2、json的序列化和反序列化的方法:

publicclass JsonHelper

{

///

/// 序列化

///


///

///

///

publicstaticstring JsonSerializer<T>(T t)

{

string jsonString =string.Empty;

DataContractJsonSerializer ser
=new DataContractJsonSerializer(typeof(T));

MemoryStream ms
=new MemoryStream();

ser.WriteObject(ms, t);

jsonString
= Encoding.UTF8.GetString(ms.ToArray());

ms.Close();

return jsonString;

}

///

/// 反序列化

///


///

///

///

publicstatic T JsonDeserialize<T>(string jsonString)

{

T obj
=default(T);

DataContractJsonSerializer ser
=new DataContractJsonSerializer(typeof(T));

MemoryStream ms
=new MemoryStream(Encoding.UTF8.GetBytes(jsonString));

obj
= (T)ser.ReadObject(ms);

return obj;

}

}

3、现在先准备一个Person类:

class Person

{

[DataMemberAttribute]

publicstring Name { get; set; }

[DataMemberAttribute]

publicint Age { get; set; }

[DataMemberAttribute]

publicstring Gender { get; set; }

}

4、现在就用JsonHelper方法把Person类的对象序列化成Json格式。

Person p =new Person { Name ="张三", Age =12, Gender ="" };

string str = JsonHelper.JsonSerializer<Person>(p);

Console.WriteLine(str);

5、结果:

{ "Age":12,"Gender":"","Name":"张三"}

6、再把Json格式反序列化为Person类型:

p = JsonHelper.JsonDeserialize<Person>(str);

Console.WriteLine(
"{0},{1},{2}",p.Name,p.Age,p.Gender);

7、结果:

张三,12,男

转载于:https://www.cnblogs.com/sirkevin/archive/2011/06/16/2083004.html

更多相关:

  • 不透明指针(opaque pointer)可以用来在C中实现封装。 什么是不透明指针(opaque pointer) 从字面意思来看,“不透明”意味着看不到内部,因此“不透明指针”即看不到内部定义的指针。这样说有些抽象,我们来看个例子: #include typedef void *opque_data;...

  • 文章目录前言封装C++实现C 实现继承C++ 实现C实现 前言 为了保证代码的可复用性、可扩展性、可维护性,我们提出了面向对象的思想。 面向对象的核心特性有以下几个 封装特性 信息隐藏或者数据访问保护。类通过暴露有限的访问接口,授权外部仅能通过类提供的方式来访问内部信息或者数据。 封装用来提升代码的可扩展性、可维护性继承特...

  • 容器选择 取的元素很多,频繁的增删元素:linkedlist 涉及到增删,不频繁:linkedlist,arraylist 涉及到了增删,同时涉及到了查询:建议使用arraylist【一般情况增删不多,查询多】   Set:没有顺序,元素不可以重复 Set集合的功能和collection的功能是一致的。   Set两大子类 Hashs...

  • 创建新对象有两种不同的方法: 定义并创建对象的实例使用函数来定义对象,然后创建新的对象实例1.定义并创建对象的实例 var person=new Object(); person.firstname="John"; person.lastname="Doe"; person.age=50; person.eyecolor="blue...

  • 菜鸟一枚,正在学习C++ Gui Qt4,整理很零碎,欢迎批评指正   1.窗口标题: QWidget *window = new QWidget; window->setWindowTitle("Enter Your Age"); **************************************** 关于标题...

  • 将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例: 输入:1->2->4, 1->3->4 输出:1->1->2->3->4->4 总体思路是: 比较两个链表头节点,较小的插入新链表指针之后,同时较小链表指针向后移动一位 实现如下: ListNode* mergeTwo...

  • 1.直接调用微软socket对象处理 static void Main(string[] args){try{IPAddress ip = new IPAddress(new byte[] { 127, 0, 0, 1 });//在3721端口新建一个TcpListener对象TcpListener listener = new...

  •   现在很多地方都会用到zookeeper, 用到它的地方就是为了实现分布式。用到的场景就是服务注册,比如一个集群服务器,需要知道哪些服务器在线,哪些服务器不在线。   ZK有一个功能,就是创建临时节点,当机器启动应用的时候就会连接到一个ZK节点,然后创建一个临时节点,那么通过获取监听该路径,并且获取该路径下的节点数量就知道有哪些服务...

  • 前台到后台java时data日期类型的转化 在实体类中用@DataTimeFormat,这样设置即使传过来是空的字符串也是可以转的,要和前面传过来的格式一致,如 @XmlElement(name="BeginDate") @DateTimeFormat(pattern="yyyy-MM-dd") private Date begin...