Chinaunix首页 | 论坛 | 博客
  • 博客访问: 45215
  • 博文数量: 10
  • 博客积分: 1514
  • 博客等级: 上尉
  • 技术积分: 145
  • 用 户 组: 普通用户
  • 注册时间: 2010-07-28 16:57
文章分类

全部博文(10)

文章存档

2013年(1)

2012年(2)

2011年(2)

2010年(5)

我的朋友

分类: C#/.net

2013-08-27 18:44:31

最近做一个页面需要从一个api里获取ip和label, api返回的json格式.但里面没有对ip排序,我们需要的是按id的从小到大排序

点击(此处)折叠或打开

  1. public class GetLabel:List<object> //解释json字符串
  2.         {
  3.             public string ip { get; set; }
  4.             public string label { get; set; }
  5.         }


  6.         public string markIpStr(string myData) { // 为了排序对每个ip的长度进行补偿
  7.             string result = "";
  8.             foreach (var s in myData.Split('.'))
  9.             {
  10.                 if (s.Length == 1)
  11.                 {
  12.                     result += "00" + s + ".";
  13.                 }
  14.                 else if (s.Length == 2)
  15.                 {
  16.                     result+= "0" + s + ".";
  17.                 }
  18.                 else
  19.                 {
  20.                     result+= s+".";
  21.                 }
  22.             }
  23.             return result;
  24.         }
  25.            ArrayList ls = new ArrayList { };//array用来存ip转成int类型,然后就可以排序
  26.            Hashtable hs = new Hashtable { }; //这个hs用来存放排序前后的关联
  27.            JavaScriptSerializer js = new JavaScriptSerializer();
  28.            List<GetLabel> list = js.Deserialize<List<GetLabel>>(result);//假设result就是我们从api获取到的json字符串,这里如果获取就不说了.
  29.            List<GetLabel> labelList = new List<GetLabel>(list);
  30.            List<GetLabel> labelListSorted = new List<GetLabel> { };
  31.            for (int i = 0; i < labelList.Count(); i++) //循环得到的json
  32.            {
  33.                try
  34.                {
  35.                    hs.Add(Convert.ToInt64(markIpStr(labelList[i].ip).Replace(".", "")), i);//把ip转成int类型并做为key, value是原始json的index
  36.                    ls.Add(Convert.ToInt64(markIpStr(labelList[i].ip).Replace(".", "")));//把ip转成int类型并存入ls
  37.                }
  38.                catch { }
  39.            }
  40.            ls.Sort();//对ls排序
  41.            foreach (var i in ls)//循环ls
  42.            {
  43.                
  44.                labelListSorted.Add(labelList[Convert.ToInt32(hs[i])]);//从hs拿到想对应的value,这个value就是原始json的index,用index取出再存入新的labelListSorted,整个排序完成
  45.            }
欢迎大家发表更好的方法或指点.
阅读(668) | 评论(0) | 转发(0) |
0

上一篇:.net 升级错误

下一篇:没有了

给主人留下些什么吧!~~