当前位置: 代码迷 >> C# >> 帮忙处置一组json数据到Dictionary
  详细解决方案

帮忙处置一组json数据到Dictionary

热度:18   发布时间:2016-05-05 03:28:34.0
帮忙处理一组json数据到Dictionary
以下是json数据
string txt="{"nu":"2223333","com":"asa","updatetime":"2015-06-11 10:43:51","signname":"","condition":"H100","status":"200","data":[{"time":"2015-06-11 10:00:05","location":"","context":"小明","ftime":"2015-06-11 10:00:05"},{"time":"2015-06-11 08:35:36","location":"","context":"小张","ftime":"2015-06-11 08:35:36"}],"signedtime":"","state":"5","departure":"","addressee":"","destination":"","message":"ok","ischeck":"0","pickuptime":""}";

我希望得到Dictionary<string,string>内容为
key为time内容,value为context内容
即如下
----------------------------------
2015-06-11 10:00:05,小明
2015-06-11 08:35:36,小张

请给出具体写法,谢谢

------解决思路----------------------
很多人遇到解析
html,xml,json,都先想正则

其实用正则解析这些是挺扯淡的方案
.net类库已经提供了解析这些格式的方法,非要自己解析,解析完如果数据稍有改变,就出现一堆bug

都是在给自己找麻烦
------解决思路----------------------
http://bbs.csdn.net/topics/390518102
------解决思路----------------------
自找麻烦,先用实体序列化,然后按你Dic的要求组织
------解决思路----------------------
LZ别用反序列 也别用正则了  一个一个循环判断吧...

比如 如果发现有一个字母是t(time) 那么截取字符串+4到时间的长度 然后add

 你看如何?
------解决思路----------------------
既然只是需要其中几项,用正则处理也是可以的
编程都按一个套路来,那编程还有什么意思?
string txt="{\"nu\":\"2223333\",\"com\":\"asa\",\"updatetime\":\"2015-06-11 10:43:51\",\"signname\":\"\",\"condition\":\"H100\",\"status\":\"200\",\"data\":[{\"time\":\"2015-06-11 10:00:05\",\"location\":\"\",\"context\":\"小明\",\"ftime\":\"2015-06-11 10:00:05\"},{\"time\":\"2015-06-11 08:35:36\",\"location\":\"\",\"context\":\"小张\",\"ftime\":\"2015-06-11 08:35:36\"}],\"signedtime\":\"\",\"state\":\"5\",\"departure\":\"\",\"addressee\":\"\",\"destination\":\"\",\"message\":\"ok\",\"ischeck\":\"0\",\"pickuptime\":\"\"}";
            var p = "\"(ftime
------解决思路----------------------
context)\":\"([^\"]+)\"";
            var v = "";
            var res = new Dictionary<string,string>();
            Regex.Matches(txt, p).Cast<Match>().ToList().ForEach(x =>
            {
                if (x.Groups[1].Value == "context") v = x.Groups[2].Value;
                else res.Add(x.Groups[2].Value, v);
            });
            foreach (var x in res) Console.WriteLine("{0} {1}", x.Key, x.Value);
  相关解决方案