JSON(JavaScript Object Notation,JavaScript对象表示法)是一种由道格拉斯·克罗克福特构想和设计、轻量级的数据交换语言,该语言以易于让人阅读的文字为基础,用来传输由属性值或者序列性的值组成的数据对象。
JSON与XML最大的不同在于XML是一个完整的标记语言,而JSON不是。XML利用标记语言的特性提供了绝佳的延展性(如XPath),在数据存储,扩展及高级检索方面具备对JSON的优势,而JSON则由于比XML更加小巧,以及浏览器的内建快速解析支持,使得其更适用于网络数据传输领域。
我们都知道 .NET 自带用于将对象序列化成 JSON 的类(DataConstractJsonSerializer 和 JavaScriptSerializer),但是 JSON.NET 给我们带来更多的功能和强大的性能。具体可以查看官网介绍。
假如我们有这样一个对象
public class Movie{ public string Name { get; set; } public int Year { get; set; }}
将对象序列化为 JSON
Movie movie = new Movie{ Name = "Bad Boys", Year = 1995};string json = JsonConvert.SerializeObject(movie, Formatting.Indented);
将 JSON 反序列化为对象
string json = @"{ ‘Name‘: ‘Bad Boys‘, ‘Year‘: 1995}";Movie movie = JsonConvert.DeserializeObject<Movie>(json);
将 JSON 序列化为文件
Movie movie = new Movie{ Name = "Bad Boys", Year = 1995};// 方法一// serialize JSON to a string and then write string to a fileFile.WriteAllText(@"c:\movie.json", JsonConvert.SerializeObject(movie));// 方法二// serialize JSON directly to a fileusing (StreamWriter file = File.CreateText(@"c:\movie.json")){ JsonSerializer serializer = new JsonSerializer(); serializer.Serialize(file, movie);}
从文件中获取 JSON
// 方法一// read file into a string and deserialize JSON to a typeMovie movie1 = JsonConvert.DeserializeObject<Movie>(File.ReadAllText(@"c:\movie.json"));// 方法二// deserialize JSON directly from a fileusing (StreamReader file = File.OpenText(@"c:\movie.json")){ JsonSerializer serializer = new JsonSerializer(); Movie movie2 = (Movie)serializer.Deserialize(file, typeof(Movie));}