用正则表达式和js轻松处理json文本
2012-10-12 17:51
246 查看
万事开头难
很多群里的朋友经常聊到如何解析Json,通常很多人都会搬出他们珍藏的dll出来,比如Newtonsoft.json.dll,litjson.dll等等。互相吹嘘这些动态链接库的功能如何如何了得,依我看,要解析轻量化类型json,用.net自带的类库就可以胜任了。但是,有一种看起来更方便的老古董——正则表达式,处理json是绰绰有余。
Json(JavaScript Object Notation)作为当今互联网最为一种流行的,超越语言的网络数据交换格式,可以说是“肉多骨少”的一种类型,在网络传输方面大有赶超xml作为传统传输格式的地位,其在REST架构上的应用随着腾讯,淘宝等巨型网络公司的推波助澜,而成为程序员追捧的理想格式。
然而,虽然json在javascript里解析起来轻而易举,但是在.net里却没那么容易。即使微软在.NET Framework 3.5中提供了一个JSON对象的序列化工具(System.Web.Script.Serialization.JavaScriptSerializer),但其本身的强类型属性,让人望而却步。
还好,有正则表达式!
正则表达式
首先申明一下,正则表达式是一直纸老虎,根本就不难。首先让我们搬出一个正在表达式在.net中的实现例子。
有这么一段json格式的文本,从右下图可以清除地看出其结构:
{ View Code [code]public static Dictionary<string, string> GetMyValue(string jsonSource, string key1, string key2) { Dictionary<string, string> dic = new Dictionary<string, string>(); string jsonStr = "function handleJson() {var j=" + jsonSource + ";var arr1=new Array();var arr2=new Array();for(var " + key2 + " in j." + key1 + ") arr1.push(" + key2 + "); return arr1;} handleJson(); "; object o = Eval.JScriptEvaluate(jsonStr, VsaEngine.CreateEngine()); ArrayObject arr = (ArrayObject)o; for (var i = 0; i <= (int)arr.length - 1; i++) { dic.Add(arr[i].ToString(), arr[i].ToString()); } return dic; }
这里的代码是我以前做项目的时候临时写的,很乱,大家将就着看看。只是作为一种可行的方法,并不推荐大家用这种方法。有时间大家试试看。
教程每天都更新,欢迎大家继续关注!
相关文章推荐
- 正则表达式搭配js轻松处理json文本方便而老古
- 正则表达式搭配js轻松处理json文本方便而老古
- Java中使用正则表达式处理文本数据
- js-json的数据转化及正则表达式的运用
- 文本(字符串)处理与正则表达式
- 【语言处理与Python】3.7用正则表达式为文本分词
- PHP扩展之文本处理(二)——PCRE正则表达式语法2——元字符
- PHP扩展之文本处理(三)——POSIX正则表达式函数及使用示例
- 文本处理三剑客之grep与正则表达式
- 文本处理之正则表达式和grep
- 文本处理三剑客之grep(包括常用正则表达式)
- 字符串处理是许多程序中非常重要的一部分,它们可以用于文本显示,数据表示,查找键和很多目的.在Unix下,用户可以使用正则表达式的强健功能实现这些 目的,从Java1.4起,Java核心API就引入了java.util.regex程序包,它是一种有价值的基础
- Java中使用正则表达式处理文本数据
- Linux高级文本处理之正则表达式与grep
- JS处理字符串---正则表达式和String类
- 教你轻松记住js正则表达式
- 教你轻松记住JS正则表达式
- PHP扩展之文本处理(二)——PCRE正则表达式语法3——转义序列(反斜线)
- Linux学习第七课-文本处理工具及正则表达式
- python 正则表达式处理不规范json