JSON(JavaScript object Notation),轻量级的数据交换格式。
也就是说我们可以在前台使用JS将Json数据传到后台,处理后再返回前台。它可以完成不同格式的数据进行交换。就像我们经常写的AJAX传递数据一样。我们在Controller中返回JsonResult类型的值,然后用JSON接收json类型的数据。
下面我们从JSON的语法,结构以及生成和解析三方面来进行讲解。
JSON和JavaScript具有相同的语法,它是ECMAScript的一个子集。
语法规则:
1、数据以键值对的格式存储;
2、数据由逗号分隔;
3、JSON值可以为 Number,String,Boolean,Object,Array,Null
JSON包含两种结构:一种是Object,一种是Array。
Object:{"name":"Cindy","age":25}
Array:[{"name":"cindy","age":23},{"name":"bill","age":23}]
JSON有一个特点就是:数据中可以包含对象,对象中也可以包含数组,也就是所谓的嵌套格式。
此实例是用Visual Studio 2012中的C#语言来编写的。在.Net中有两种工具来帮助我们对JSON进行解析和生成,它们分别是:Json.Net,Script.Serialization。
下面我们就以上两种工具,分别讲解一下JSON的解析和生成。
首先,我们要添加引用 system.web.Extensions。然后在.cs文件中添加Using system.web.script.serialization以及using system.IO对JSON进行写入和读取。
先定义一个Person实体类:
class Person { public string name { get; set; } public int age { get; set; } public override string ToString() { returnstring.Format("Name:{0}\nAge:{1}", name, age); } }
class Program { static void Main(string[] args) { Person p1 = new Person() {name="Cindy",age=23}; JavaScriptSerializer ser = newJavaScriptSerializer(); string outputJSON =ser.Serialize(p1); File.WriteAllText("Output.json",outputJSON ); Console.Write(p1); } }
class Program { static void Main(string[] args) { JavaScriptSerializer ser = newJavaScriptSerializer(); string JSONString =File.ReadAllText("Output.json"); Person p2 =ser.Deserialize<Person>(JSONString); Console.Write(p2); } }
我们要添加Nuget中的Json.net包,然后,添加Using Newtonsoft.Json。
class Program { static void Main(string[] args) { Person p2 =new Person() { name="cindy",age=23}; string outputJson =JsonConvert.SerializeObject(p2); File.WriteAllText("Output.json",outputJson); Console.WriteLine(p2); } }
class Program { static void Main(string[] args) { stringJSONString = File.ReadAllText("Output.json"); Person p1 =JsonConvert.DeserializeObject<Person>(JSONString); Console.WriteLine(p1); } }