C#解析JSON几种方式-整理

C#解析JSON几种方式-整理

复制代码
 1 public static class JSON
 2     {
 3         public static T parse<T>(string jsonString)
 4         {
 5             using (var ms = new MemoryStream(Encoding.UTF8.GetBytes(jsonString)))
 6             {
 7                 return (T)new DataContractJsonSerializer(typeof(T)).ReadObject(ms);
 8             }
 9         }
10         public static string stringify(object jsonObject)
11         {
12             using (var ms = new MemoryStream())
13             {
14                 new DataContractJsonSerializer(jsonObject.GetType()).WriteObject(ms, jsonObject);
15                 return Encoding.UTF8.GetString(ms.ToArray());
16             }
17         }
18     }
复制代码

  1.4 main函数调用

复制代码
 1 //类初始化
 2             var p1 = new Person
 3             {
 4                 Age = 10,
 5                 Alive = true,
 6                 Name = "yylp521",
 7                 FavoriteFilms = new[] { "行尸走肉", "生化危机" }
 8             };
 9             var p2 = new Person() { Age = 32, Name = "bjlihx", Child = p1 };
10             //序列化
11             var jsonString = JSON.stringify(new[] { p1, p2 });
12             Console.WriteLine(jsonString);
13             JSON.parse<List<Person>>(jsonString);// 反序列化,泛型集合 
14             JSON.parse<Person[]>(jsonString);// 数组转换  
15             Console.ReadKey();
复制代码

  输出数据:[{"Name":"yylp521","Age":10,"Alive":true,"FavoriteFilms":["行尸走肉","生化危机"],"Child":null},{"Name":"bjlihx","Age":32,"Alive":false,"FavoriteFilms":null,"Child":{"Name":"yylp521","Age":10,"Alive":true,"FavoriteFilms":["行尸走肉","生化危机"],"Child":null}}]

简要说明:1.准备数据那里要有相关特性标签
    2.也可以通过JsonReaderWriterFactory来实现

2.内置方式,使用JavaScriptSerializer

  2.1 使用.NET Framework 3.5之后版本(包含.Net FrameWork 3.5)中提供的System.Web.Script.Serialization命名空间下的JavaScriptSerializer类进行对象的序列化与反序列化.

  2.2 需要添加命名空间:using System.Web.Script.Serialization;

  2.3 测试代码

1 JavaScriptSerializer json = new JavaScriptSerializer();
2 json.Serialize(new List<Person>() { p1, p2 });//这里参数是Object类型的

3.支持Silverlight使用,system.json

  3.1 暂时未使用到Silverlight中。

4.通用开源方式,使用JSON.NET

  4.1 使用开源的类库Newtonsoft.Json(下载地址http://json.codeplex.com/)。下载后加入工程就能用。

    通常可以使用JObject, JsonReader, JsonWriter处理。这种方式最通用,最灵活,也可以随时修改。

  4.2 详细内容

    4.2.0 添加命名空间:using Newtonsoft.Json;

    4.2.1 使用JsonReader读Json字符串

 View Code

    4.2.2 使用JsonWriter写字符串

 View Code

    4.2.3 使用JObject读写字符串

      4.2.3.1 添加命名空间:using Newtonsoft.Json.Linq;

 View Code

    4.2.4 使用JsonSerializer读写对象(基于JsonWriter与JsonReader)

      4.2.4.1数组型数据

 View Code

      4.2.4.2嵌套格式

 View Code

      4.2.4.3 自定义使用

        1.辅助类

 View Code

        2.使用

 View Code
 
 
分类: Ajax&jquery
原文地址:https://www.cnblogs.com/Leo_wl/p/3149123.html