C#的JSON转换处理工具类带演示样例(Action One)
以前用到JSON输出的时候,总是自己手动拼接.网上找到的JSON处理类要么不符合要求就是不符合要求,没有便捷处理的样例.最近实在受不了了,就把 json官网 的工具类扒拉了一次还是不好用,没办法综合参考着自己写一个吧.这东西不麻烦,主要在于懒和没人分享好用的,怨念ing
工具封装成dll了,省的有人不知道怎么导入类.下载115网盘传送门 已经更新为1.1版本具体请参看 C#的JSON转换处理工具类带演示样例(Action Two) .下载以后在C#项目中右键导入就行了.各种项目类型都支持.
目前支持三种调用方法.一种一种来吧.创建个模型类,一会调用
class Human { public String Name { get; set; } public String Address { get; set; } public String City { get; set; } public String Country { get; set; } public int ZipCode { get; set; } public bool Sex { get; set; } public String WebSite { get; set; } public String Email { get; set; } /// <summary> /// Array属性测试 /// </summary> public Array Enjoy { get { return _enjoy.ToArray(); }} private ArrayList _enjoy = new ArrayList(); public void addEnjoy(String enjoy) { _enjoy.Add(enjoy); } /// <summary> /// List范型测试,针对JSON的输出格式,目前只考虑String类型 /// </summary> public List<String> Tech { get { return _tech; } } private List<String> _tech = new List<string>(); public void addTech(String tech) { _tech.Add(tech); } }
方法一:纯字典手动拼接方式,繁琐一点但是灵活性更高.
// 创建一个name/value格式的字典,用来保存JSON对象 Dictionary<JSONStringValue, JSONValue> dic = new Dictionary<JSONStringValue, JSONValue>(); // 创建系列数据,格式如下 JSONStringValue jsv_name_Business = new JSONStringValue("Name"); JSONStringValue jsv_value_Business = new JSONStringValue("clove"); dic.Add(jsv_name_Business, jsv_value_Business);//添加数据到字典 JSONStringValue jsv_name_Address = new JSONStringValue("Address"); JSONStringValue jsv_value_Address = new JSONStringValue("HangKangZhong Road"); dic.Add(jsv_name_Address, jsv_value_Address); JSONStringValue jsv_name_City = new JSONStringValue("City"); JSONStringValue jsv_value_City = new JSONStringValue("Peking"); dic.Add(jsv_name_City, jsv_value_City); JSONStringValue jsv_name_WebSite = new JSONStringValue("WebSite"); JSONStringValue jsv_value_WebSite = new JSONStringValue("http://30c.org"); dic.Add(jsv_name_WebSite, jsv_value_WebSite); // Add an array of payment methods JSONStringValue jsv_name_Enjoy = new JSONStringValue("Enjoy"); List<JSONValue> listEnjoy = new List<JSONValue>(); listEnjoy.Add(new JSONStringValue("net")); listEnjoy.Add(new JSONStringValue("Animal")); listEnjoy.Add(new JSONStringValue("Sleep")); JSONArrayCollection jsv_value_Enjoy = new JSONArrayCollection(listEnjoy); dic.Add(jsv_name_Enjoy, jsv_value_Enjoy); JSONObjectCollection jsonObjectCollection = new JSONObjectCollection(dic); Console.WriteLine("字典ToString()方法直接输出字符串"); Console.WriteLine("==============================="); Console.WriteLine(jsonObjectCollection.ToString()); Console.WriteLine("===============================\n"); Console.WriteLine("字典PrettyPrint()输出带格式,便于阅读"); Console.WriteLine("==============================="); Console.WriteLine(jsonObjectCollection.PrettyPrint()); Console.WriteLine("===============================");
第二种:反射处理类,只能处理对象,对象可以有Array或List范型属性
//创建自定义对象类型 Human clove = new Human(); clove.Name = "Clove"; clove.Address = "HangKangZhong Road"; clove.City = "Peking"; clove.Country = "China"; clove.WebSite = "http://30c.org"; clove.Sex = true; clove.Email = "clove@30c.org"; clove.addEnjoy("net"); clove.addEnjoy("Animal"); clove.addEnjoy("sleep"); clove.addTech("Java"); clove.addTech("ASP.NET"); clove.addTech("PHP"); clove.addTech("ASP"); JSONReflector jsonReflector = new JSONReflector(clove); //输出 Console.WriteLine("反射ToString()方法直接输出字符串"); Console.WriteLine("==============================="); Console.WriteLine(jsonReflector.ToString()); Console.WriteLine("===============================\n"); //还是输出 Console.WriteLine("反射PrettyPrint()输出带格式,便于阅读"); Console.WriteLine("==============================="); Console.WriteLine(jsonReflector.PrettyPrint()); Console.WriteLine("===============================");
第三种:反射处理,参数只能是List范型.可不限级次嵌套
//创建自定义对象类型 List<Object> list = new List<Object>(); List<String> mlist = new List<String>(); mlist.Add("http://30c.org"); mlist.Add("clove"); list.Add(mlist); List<Human> hList = new List<Human>(); Human h1 = new Human(); h1.Name = "http://30c.org"; hList.Add(h1); Human h2 = new Human(); h2.Name = "https://blog.30c.org"; hList.Add(h2); list.Add(hList); JSONListReflector jsonListReflector = new JSONListReflector(list); //输出 Console.WriteLine("反射List的ToString()方法直接输出字符串"); Console.WriteLine("==============================="); Console.WriteLine(jsonListReflector.ToString()); Console.WriteLine("===============================\n"); //木有做Pretty输出方式,懒了
本想把方法做成更加灵活的方式,昨天那么多事实在没时间.JSON处理结果又要数组[]又要对象{}的,真不够折腾的.
哪天心情好了做成通用的,期待吧.
更加灵活简洁的1.1版本具体请参看 C#的JSON转换处理工具类带演示样例(Action Two) .
欢迎大佬支持本博客的发展 -- Donate --
本文链接:C#的JSON转换处理工具类带演示样例(Action One)
转载声明:本站文章若无特别说明,皆为原创,转载请注明来源:三十岁,谢谢!^^
分享到: | |
没有评论