今天小贱继续讲Newtonsoft.Json的使用。之前讲了Json与Xml、类的互相转换,当然功能不仅仅只有这些,下面就提到另几个转换。下面的例子都需要引用Newtonsoft.Json这个库。
using Newtonsoft.Json; // Newtonsoft.Json引用
1.将字典转换成Json字符串
// Newtonsoft.Json测试 private static void JsonTest() { // 创建一个字典 Dictionary<string, int> dic = new Dictionary<string, int> { { "James", 9001 }, { "Jo", 3474 }, { "Jess", 11926 } }; // 将字典转换成Json字符串 string json = JsonConvert.SerializeObject(dic); Console.WriteLine(json); }
我们看下运行的结果:
是不是很简单?如果看过我之前一篇文章的朋友,是不是有似曾相识的感觉?没错,用的是同一个函数JsonConvert.SerializeObject(),接下我们还会用到它,现在先放着。我们说说这个函数的另一个参数Formatting,也就是Json字符串显示的格式。我们在函数中添加一个参数Formatting.Indented,看看结果又什么不同。
是不是比上面的结果更加直观了?这个用法在要将Json字符串记录到文档中十分有效。
2.Json字符串转换成字典
// Newtonsoft.Json测试 private static void JsonTest() { // 创建一个字典 Dictionary<string, int> dic = new Dictionary<string, int> { { "James", 9001 }, { "Jo", 3474 }, { "Jess", 11926 } }; // 将字典转换成Json字符串 string json = JsonConvert.SerializeObject(dic, Formatting.Indented); Console.WriteLine(json + "\n"); // 创建一个新的字典保存结果 Dictionary<string, int> newDic = JsonConvert.DeserializeObject<Dictionary<string, int>>(json); // 打印字典中元素数量 Console.WriteLine(newDic.Count); }
我们将前面的代码修改一下,之前得到的Json作为参数使用。来观察下结果:
3.集合转换成Json字符串
// Newtonsoft.Json测试 private static void JsonTest() { // 创建一个集合 List<string> list = new List<string>(){ "James", "Jo", "Jess" }; // 将集合转换成Json字符串 string json = JsonConvert.SerializeObject(list, Formatting.Indented); Console.WriteLine(json); }
这是一个一阶的集合,如果是多阶的呢?我们来试试:
// Newtonsoft.Json测试 private static void JsonTest() { // 创建一个集合 List<List<string>> list = new List<List<string>>{ new List<string>{"James","Jo","Jess"}, new List<string>{"1001","1002","1003"} }; // 将集合转换成Json字符串 string json = JsonConvert.SerializeObject(list, Formatting.Indented); Console.WriteLine(json); }
看来也是可以实现的{:94:}
4.Json字符串转换成集合
// Newtonsoft.Json测试 private static void JsonTest() { // 创建一个集合 List<List<string>> list = new List<List<string>>{ new List<string>{"James","Jo","Jess"}, new List<string>{"1001","1002","1003"} }; // 将集合转换成Json字符串 string json = JsonConvert.SerializeObject(list, Formatting.Indented); Console.WriteLine(json + "\n"); // 创建一个新集合储存结果 List<List<string>> newList = JsonConvert.DeserializeObject<List<List<string>>>(json); foreach (List<string> child0 in newList) { foreach (string child1 in child0) { Console.WriteLine(child1); } } }
还是用前一个实验的结果来作这个实验的参数,然后遍历出集合中的结果。
OK啦!超方便的吧!今天的笔记OVER,吃饭吃饭!