手机版

带js的正则表达式可以轻松处理json文本 方便又老套

时间:2021-10-19 来源:互联网 编辑:宝哥软件园 浏览:

群里很多朋友经常讨论如何解析Json。通常,许多人会搬出他们收集的dll,如Newtonsoft.json.dll和litjson.dll。互相吹嘘这些动态链接库的功能,在我看来,要解析轻量级json,使用附带的类库就足够了。净。但是有一个看起来比较方便的老——正则表达式,处理json绰绰有余。JSON(JavaScript Object notification)作为当今互联网上最流行的网络数据交换格式,可以说是一种“肉多骨头少”的类型,在网络传输中已经大大超越了xml作为传统传输格式的地位。它在REST架构中的应用,在腾讯、淘宝等巨型网络公司的帮助下,已经成为程序员追捧的理想格式。然而,尽管json在javascript中很容易解析,但在。净。即使微软已经提供了一个JSON对象序列化工具(系统。web . script . serialization . JavaScript serializer)。NET Framework 3.5,自身的强类型属性让人气馁。幸好有正则表达式!首先,正则表达式是纸老虎,一点都不难。首先,让我们举一个在中实现的表达式的例子。净。有一段json格式的文字,从右下图可以清楚的看到它的结构:复制的代码如下: { people :[{ name 3360 ' Zhang shan ',年龄: 12,已婚3360假},{name:' lisi ',年龄: 24,已婚:真},{name: '吴王',年龄: 40,已婚:

如果想要在c#中有规律地从上面的文本中提取有用的信息,就必须添加支持正则表达式的组件引用。复制代码如下:使用system.text .正则表达式;复制的代码如下:静态void main(string[]args){ string JSON=' { people 3360[{ name 3360 ' Zhang shan \ ',年龄:12,已婚3360 false},{ name: \ ' lisi \ ',年龄:24,已婚3360 false },{ name 3: '吴王\ ',年龄:40,已婚: rue }]Regex regex=新Regex(@'Name:\s* '(?'Name'[^'']*)'',\s*Age:\s*(?'Age'[^,]*),\s*Married:\s*(?'Married'[^\}]*)',RegexOptions。ignore case);//声明并实例化正则表达式对象。在这里,添加参数RegexOptions。IgnoreCase,用于忽略文本大小写if(regex . ismatch(JSON)){ match collection matches=regex . matches(JSON);//您可以将所有结果与顶部文本中的多组相似结果进行匹配。如果只有一个组,请使用Match match=regex。match(JSON);StringBuilder StringBuilder=new StringBuilder();foreach (Match中的匹配匹配){字符串名称=match。组['名称']。价值;//这里Name是匹配的表达式(?“名称”[“]*)中的名称被显式分组为字符串年龄=匹配。群体['年龄']。价值;字符串已婚=匹配。团体['已婚']。价值;stringBuilder。AppendFormat('姓名:{0},年龄:{1},已婚:{2}\n ',姓名,年龄,已婚);}控制台。WriteLine(stringBuilder。ToString());} else {Console。WriteLine('未能提取文本!');}控制台。read();}如果匹配正确,结果将如图所示:

很多新手不知道这些步骤是怎么来的。在这里,我想推荐一个小工具用于正则表达式测试。因为是专门针对c#的,用起来真的很方便。至于下载地址百度一下,你就知道了!

我来介绍一下上面的火柴。\s匹配一个空格*匹配次数(这里,它是无限的甚至不是一次){1,}至少匹配一次或多次\w匹配一个字母或数字\。这匹配任何字符\d匹配一个数字,不包括前面的正负符号()隐式分组(?Groupname'\w)或(?Groupname\w)匹配一个由一个字符组成的显式分组,并包含一个可以随意命名的组名Groupname。[\ w]这里,“0”是与后面出现的字符匹配的所有字符。例如,如果您匹配名称:'haha123 ',则可以匹配内部的haha123:名称3360 '(?名称'['] *)表示匹配除' haha123 '以外的所有字符。事实上,以上字符是最常用的正则表达式。如果你知道它,你就可以很容易地掌握正则表达式。接下来,我将介绍一个解析json的方法。这是在中调用javascript的脚本。净。调用Javascript是一个被忽略的方法。事实上,它似乎比上面的正则表达式更快。众所周知,json只是javascript中列出的一个单一的东西,它的语法遵循js,所以最好使用json以一种原始的方式来处理JSON。复制的代码如下:使用微软。JScript使用微软。Vsa使用微软。JScript . Vsa复制代码如下:公共静态字典字符串,string get my value(string JSON source,string key1,string key 2){字典字符串,string DIC=new dictionary string,string();string jsonStr=' function handleJson(){ var j=' jsonSource ';var arr1=新数组();var arr2=新数组();for(j ' key 1 ')中的var ' key 2 ' arr 1 . push(' key 2 ');返回arr1} handleJson();';对象o=Eval。JScriptEvaluate(jsonStr,VsaEngine。create engine());ArrayObject arr=(ArrayObject)o;for(var I=0;I=(int)arr . length-1;i ) { dic。添加(arr[i]。ToString(),arr[i]。ToString());}返回dic}这里的代码是我以前做项目的时候临时写的,很乱,大家就随便看看。作为可行的方法,不推荐。有时间就试试。教程每天都在更新。请继续关注!

版权声明:带js的正则表达式可以轻松处理json文本 方便又老套是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。