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 = "http://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) .

请订阅本站 RSS feed 订阅到信箱 ,欢迎 Donate 或者 上面的广告内容 支持三十岁

本文链接:C#的JSON转换处理工具类带演示样例(Action One)

转载声明:本站文章若无特别说明,皆为原创,转载请注明来源:三十岁,谢谢!^^


分享到:          
评论关闭