C# .net 2.0 中Json进行字典排序

有的服务端接口需要对Json进行字典排序,然后再进行相关的验证等,由于服务器上面只能使用.net 2.0,网上查了很多都是.net 2.0以上的,在.net 2.0中无法使用,自己就写了个比较笨的方法,还有就是,Json字符串格式不固定,万一哪天Json多了些字段和多了些其它数组什么的.(下面只是一个实例,没有对是不是数组进行判断)

[csharp]  view plain  copy
  1. String Json = "{"  
  2.                 + "\"vCode\": \"cs100\","  
  3.                 + "\"order\": \"PC1709-000342\","  
  4.                 + "\"Type\": 1,"  
  5.                 + "\"number\": \"1\","  
  6.                 + "\"Name\": \"测试\","  
  7.                 + "\"arr\": ["  
  8.                     + "{"                         
  9.                         + "\"recAddress\": \"这里是卖萌的收件地址1\","  
  10.                         + "\"sendaddressee\": \"这里是卖萌的发货地址1\","  
  11.                         + "\"billCode\": \"20122311224\","  
  12.                         + "\"deliveryCode\": \"20122311224222\","  
  13.                     + "},"  
  14.                    + "{"                         
  15.                         + "\"recAddress\": \"这里是卖萌的收件地址2\","  
  16.                         + "\"sendaddressee\": \"这里是卖萌的发货地址2\","  
  17.                         + "\"billCode\": \"20122311223\","  
  18.                         + "\"deliveryCode\": \"20122311224221\","  
  19.                     + "}"  
  20.                + "],"  
  21.                + "\"aaaa\": \"这里是测试a\","  
  22.                + "\"bbbb\": \"这里是测试b\""  
  23.             + "}";  
  24.   
  25.             string temp_a = "";  
  26.             //Json转Dictionary  
  27.             Dictionary<stringobject> dicJson = Newtonsoft.Json.JsonConvert.DeserializeObject<Dictionary<stringobject>>(Json);  
  28.             List<KeyValuePair<stringobject>> listJson = new List<KeyValuePair<stringobject>>(dicJson);  
  29.             //倒叙排列:只需要把变量s2 和 s1 互换就行了 例: return s1.Value.CompareTo(s2.Value);  
  30.             //进行排序 目前是顺序  
  31.             listJson.Sort(delegate (KeyValuePair<stringobject> s1, KeyValuePair<stringobject> s2)  
  32.             {  
  33.                 //return s2.Key.CompareTo(s1.Key);//倒序  
  34.                 //这里可以加一个是否是数组判断[{},{}]  
  35.                 if (s2.Key.Equals("arr"))  
  36.                 {  
  37.                     if (temp_a.Trim().Length == 0)  
  38.                     {  
  39.                         temp_a = s2.Value.ToString();  
  40.                     }                     
  41.                 }  
  42.                 return s1.Key.CompareTo(s2.Key);//顺序  
  43.             });  
  44.             dicJson.Clear();//清除dicJson  
  45.   
  46.             //将数据部分再次转换为json字符串  
  47.             if (temp_a.Trim().Length > 0)  
  48.             {  
  49.                 string jsondata = Newtonsoft.Json.JsonConvert.SerializeObject(temp_a);  
  50.                 //获取数据中的  不同类型的数据     
  51.                 /*下面是解析JArray的部分*/  
  52.                 JArray jlist = JArray.Parse(temp_a);  
  53.                 if (jlist.Count != 0)  
  54.                 {  
  55.                     for (int i = 0; i < jlist.Count; i++)  
  56.                     {  
  57.                         //TestJson diccddddd = Newtonsoft.Json.JsonConvert.DeserializeObject<TestJson>(jsondata);  
  58.                         string temp_jList = jlist[i].ToString();  
  59.                         Dictionary<stringobject> dicArry = Newtonsoft.Json.JsonConvert.DeserializeObject<Dictionary<stringobject>>(temp_jList);  
  60.                         List<KeyValuePair<stringobject>> listArry = new List<KeyValuePair<stringobject>>(dicArry);  
  61.                         //倒叙排列:只需要把变量s2 和 s1 互换就行了 例: return s1.Value.CompareTo(s2.Value);  
  62.                         //进行排序 目前是顺序  
  63.                         listArry.Sort(delegate (KeyValuePair<stringobject> s1, KeyValuePair<stringobject> s2)  
  64.                         {  
  65.                             return s1.Key.CompareTo(s2.Key);//顺序  
  66.                         });  
  67.                         dicArry.Clear();//清除dicArry  
  68.                     }  
  69.                 }  
  70.             }  
  71.   
  72.   
  73.             //Dictionary转Json(与上面无关,这里只测试Dictionary转Json)  
  74.             Dictionary<stringstring> dic = new Dictionary<stringstring>();  
  75.             dic.Add("fga""aaa");  
  76.             dic.Add("sdf""dd");  
  77.             dic.Add("dss""sd");  
  78.             dic.Add("dnline""sds");  
  79.             dic.Add("news""sd");  
  80.             dic.Add("acj""fd");  
  81.             dic.Add("Acj""dd");  
  82.             dic.Add("abc""18");  
  83.             String temp = JsonMapper.ToJson(dic);  


排序1:


对数组排序后结果1:


对数组排序后结果2:


Dictionary转Json:


版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010997144/article/details/78086642
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值