zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    Laravel 5 基础(十一)- 子视图和表单复用
    Laravel 5 基础(十一)- 表单验证
    Laravel 5 基础(十)- 日期,Mutator 和 Scope
    Laravel 5 基础(九)- 表单
    Laravel 5 基础(八)- 模型、控制器、视图基础流程
    Laravel 5 基础(七)- Eloquent (laravel 的ORM)
    Laravel 5 基础(六)- 数据库迁移(Migrations)
    Laravel 5 基础(五)- 环境与配置
    彻底删除mac上的Win分区
    server2008搭建NTP时间服务器和客户端
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/3149123.html
Copyright © 2011-2022 走看看