经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 程序设计 » C# » 查看文章
C# JSON格式数据高级用法
来源:cnblogs  作者:梦想PHOTO  时间:2018/11/20 10:42:00  对本文有异议

 JSON简介

JSON(全称为JavaScript ObjectNotation) 是一种轻量级的数据交换格式。它是基于JavaScript语法标准的一个子集。JSON采用完全独立于语言的文本格式,可以很容易在各种网络、平台和程序之间传输。JSON的语法很简单,易于人阅读和编写,同时也易于机器解析和生成。

 

JSON与XML的比较

◆可读性

JSON和XML的可读性相比较而言,由于XML提供辅助的标签,更加适合人阅读和理解。

◆文件大小与传输

XML允许使用方便的标签,所以文件尺寸是要比JSON大的。而且JSON源于Javascript,所以天生的主战场是Javascript与网络,在这里,JSON有着XML无法赶超的优势。

 

JSON语法

1. JSON 语法是 JavaScript 对象表示法语法的子集。

数据在名称/值对中:名称是字符串,使用双引号表示。值可以是:数字(整数或浮点数),字符串(在双引号中),数组(在方括号中),对象(在花括号中),true/false/null。

数据由逗号分隔:

花括号保存对象:对象可以包含各种数据,包括数组。

方括号保存数组:数字可以包含对象。

在做开发的时候,很多数据都是以Json格式传输的,而使用Json的时候,我们通常会涉及到几个序列化对象的使用:

System.Runtime.Serialization.Json.DataContractJsonSerializer
System.Web.Script.Serialization.JavaScriptSerializer
Json.NET即Newtonsoft.Json
由于Json.NET的性能及通用性较好,因此它的使用范围越来越广,借助前人的经验今天我也总结使用一下。
官网API:http://www.newtonsoft.com/json/help/html/N_Newtonsoft_Json.htm

开源的类库Newtonsoft.Json(下载地址https://www.newtonsoft.com/json)

 

基本用法

Json.Net是支持序列化和反序列化DataTable、DataSet、Entity Framework和Entity的

  1. private void Newtonsoft()
  2. {
  3.     DataTable dt = new DataTable();
  4.     dt.Columns.Add("Name", Type.GetType("System.String"));
  5.     dt.Columns.Add("Sex", Type.GetType("System.String"));
  6.     dt.Columns.Add("Age", Type.GetType("System.Int32"));
  7.     dt.Columns.Add("PhoneNumber", Type.GetType("System.String"));for (int i = 0; i < 3; i++)
  8.     {
  9.         DataRow dr = dt.NewRow();
  10.         dr["Name"] = "Name" + i;
  11.         dr["Sex"] = i % 2 == 0 ? "女" : "男";
  12.         dr["Age"] = 18 + i;
  13.         dr["PhoneNumber"] = "18233388888";
  14.         dt.Rows.Add(dr);
  15.     }/*序列化DataTable*/string json = JsonConvert.SerializeObject(dt);/*反序列化DataTable*/DataTable dtSource = JsonConvert.DeserializeObject<DataTable>(json);foreach (DataRow item in dtSource.Rows)
  16.     {string name = item["Name"].ToString();string sex = item["Sex"].ToString();int age = int.Parse(item["Age"].ToString());string phoneNumber = item["PhoneNumber"].ToString();
  17.     }
  18. }

 

Serialize JSON 格式转换

  1. Product product = new Product();
  2. product.Name = "Apple";
  3. product.Expiry = new DateTime(2008, 12, 28);
  4. product.Sizes = new string[] { "Small" };string json = JsonConvert.SerializeObject(product);// {//   "Name": "Apple",//   "Expiry": "2008-12-28T00:00:00",//   "Sizes": [//     "Small"//   ]// }

Deserialize JSON 格式转换

  1. string json = @"{
  2.   'Name': 'Bad Boys',
  3.   'ReleaseDate': '1995-4-7T00:00:00',
  4.   'Genres': [
  5.     'Action',
  6.     'Comedy'
  7.   ]
  8. }";
  9.  
  10. Movie m = JsonConvert.DeserializeObject<Movie>(json);string name = m.Name;// Bad Boys

LINQ to JSON 格式转换

  1. JArray array = new JArray();
  2. array.Add("Manual text");
  3. array.Add(new DateTime(2000, 5, 23));
  4.  
  5. JObject o = new JObject();
  6. o["MyArray"] = array;string json = o.ToString();// {//   "MyArray": [//     "Manual text",//     "2000-05-23T00:00:00"//   ]// }

 

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号