// 被解析的是参数json,json 是一个json字符串,包含了一个数组,形如[ { .... },{.....},{.....} ],本函数将json 数组解析到 list<string>,list中每个元素为 {....}
public List<string> getArrayFromJson(string json )
{
List<string> lst = new System.Collections.Generic.List<string>();
string pat=@( \[ ).*( \] )"; //【注意,这里的正则表达式无法正常显示,看下面的图】定义正则表达式,解析得到 [ 与 ] 之间的内容,内容包括 [ 和 ]
Match matched = Regex.Match(json.Replace("'", ""), pat, RegexOptions.IgnoreCase); //去掉json中单引号,然后解析得到 [ 与 ] 之间内容,保存在matched中
pat = @"(\{).*?(\})"; //解析得到 { 与 } 之间的内容,内容包括 { 和 };要注意这个 .*? 的写法, 附加的问号是表示尽可能短匹配,这很重要,否则返回最长匹配
// 将 matched 中的内容,利用正则表达式 解析出来,结果就是 每个{ 与 } 之间的内容【表示一个数组】。每个被解析出来的数组都保存在 matches 中
MatchCollection matches = Regex.Matches( matched.Value.Replace("[","").Replace("]",""), pat, RegexOptions.IgnoreCase);
// 得到每个matches 中的字符串
foreach (Match m in matches)
{
lst.Add(m.Value);
}
return lst;
}