今天小贱继续讲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,吃饭吃饭!