JSON 序列化

本文介绍C#实现JSON序列化与反序列化的两种方法:使用Newtonsoft类和使用DataContractJsonSerializer类,并提供示例代码供参考。

方法一:Newtonsoft

开源:http://www.newtonsoft.com/

安装:
1.解压下载文件,得到Newtonsoft.Json.dll
2.在项目中添加引用..

序列化示例:

Product product = new Product();
product.Name = "Apple";
product.Expiry = new DateTime(2008, 12, 28);
product.Price = 3.99M;
product.Sizes = new string[] { "Small", "Medium", "Large" };
string output = JsonConvert.SerializeObject(product);

反序列化示例:

string json = @"[  1,  2,  3,  null]";
List<int> numbers = JsonConvert.DeserializeObject<List<int>>(json);

方法二:DataContractJsonSerializer

引入 System.Runtime.Serialization.Json命名空间使用 DataContractJsonSerializer类实现序列化

此示例使用 Person 数据协定演示序列化和反序列化。

[DataContract]
class Person
{   [DataMember]
 internal string name;
     [DataMember]
 internal int age;
}

若要将 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);

内存流包含有效的 JSON 数据。

{“age”:42,”name”:”John”}

 

此示例演示从 JSON 数据反序列化为对象。然后并调用 ReadObject

问题:我在使用中发现引用DataContractJsonSerializer进行反序列化时,有时候string类型如果中文过大等时,会产生异常。尚未找到解决方法。记录之。异常示例,运用方法一暂时能解决。错误

string

“区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区区”;

此条目发表在学习笔记分类目录,贴了, , 标签。将固定链接加入收藏夹。

2 则回应给 JSON 序列化

  1. 文秘之家说:

    文章不错,来看看

  2. 鸭宝宝说:

    来你博客逛下!

发表评论

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据