作者: SIDDHARTH PANDEY,原文地址
在这篇文章中,我将告诉您如何使用C#和Newtonsoft.JSON处理JSON并使用适当的代码。Json是一个流行的用于.NET的高性能Json框架,Json.NET也知道它。
什么是JSON?
JSON(JavaScript对象表示法)是一种轻量级数据交换格式。人类读写起来很容易。机器很容易解析和生成。它是基于JavaScript编程语言的一个子集,标准ECMA-262第3版-1999年12月。JSON是一种完全独立于语言的文本格式,但使用的是C语言家族程序员熟悉的约定,包括C、C++、C语言、java、JavaScript、Perl、Python和许多其他。这些属性使JSON成为理想的数据交换语言。
– http://www.json.org/
我已经在Visual Studio 2015中创建了一个控制台应用程序,这样就很容易编写我的程序并在控制台中快速查看输出。为了使用C#处理JSON,下一步是使用Nuget包管理器将Newtonsoft.JSON框架安装到此项目中。
以下是使用Newtonsoft.Json框架轻松序列化和反序列化Json的方法:
- JsonSerializer 是在JSON文本和.NET对象之间进行转换的最快方法。它通过将.NET对象属性名称映射到JSON属性名称并复制值,将.NET对象转换为其JSON等效对象并再次转换。
- JsonConvert 对于希望转换为JSON字符串或从JSON字符串转换为JSON字符串的简单情况非常有用。这提供了JsonConvert上的SerializeObject()和DeserializeObject()方法,为JsonSerializer提供了一个易于使用的包装器。
我还创建了一个名为Author的类,如下所示,该类将用于反序列化的对象类型。
public class Author { public string Name { get; set; } public List<string> Courses { get; set; } public DateTimeOffset Since { get; set; } public bool IsHappy { get; set; } public string Country { get; set; } public int Age { get; set; } public List<Author> FavouriteAuthors { get; set; } }
要运行应用程序并在控制台中查看结果,我在Program.cs文件中执行了以下操作:
class Program { static void Main(string[] args) { Console.Clear(); JsonConvertDemo.ShowDemo(); Console.ReadLine(); } }
接下来,我创建了另一个名为JsonConvertDemo的类,该类只有一个名为ShowDemo的方法,如下所示:
public class JsonConvertDemo { private static string authorRawData = @"{ 'Name': 'Sid', 'Courses': [ 'Course 1', 'Course 2' ], 'Since': '2017-03-01T22:09:39.9369001+00:00', 'IsHappy': true, 'Country': 'India', 'Age': 25 }"; public static void ShowDemo() { Console.WriteLine("Follow is the JSON raw data:"); Console.WriteLine(authorRawData); var author = JsonConvert.DeserializeObject<Author>(authorRawData); Console.WriteLine(Environment.NewLine + author.Name + " is an author from " + author.Country); string serializedAuthorData = JsonConvert.SerializeObject(author); Console.WriteLine(Environment.NewLine + serializedAuthorData); string formattedSerializedAuthorData = JsonConvert.SerializeObject(author, Formatting.Indented); Console.WriteLine(Environment.NewLine + formattedSerializedAuthorData); } }
- 第19行写入在第4行名为authorRawData的私有变量中定义的JSON author数据。
- 在第21行,我们使用DeserializeObject方法将字符串转换为.NET对象。注意传递给方法的类型,该方法是要反序列化到的对象的类型。第22行写作者的姓名和国家。
- 第24行使用SerializeObject方法将author对象转换回字符串格式,并在下一行将其添加到控制台。控制台中的输出没有按预期的方式格式化。
- 第27行还序列化了对象,但通过传递Formatting.Indented作为基础Newtonsoft.Json.JsonTextWriter的格式化选项,使用了SerlializeObject的重载之一。当这个新对象被写到控制台时,输出就被正确格式化了。
我希望这有助于理解如何使用C#和Newtonsoft.JSON处理JSON。我很快会写更多关于这个流行的高性能JSON框架的文章。如果你想得到更新,请订阅我的博客。