【发布时间】:2016-01-30 05:41:18
【问题描述】:
这是一个示例字符串:
Lorem ipsum dolor sit amet, ad eam option suscipit invidunt, ius 适当的贬损铜。 Nec te wisi lo{"firstName":"John", "lastName":"Doe"}rem, in quo vocent erroribus {"firstName":"Anna", "lastName":"Smith"}异议。 At omittam pertinax senserit est, pri nihil alterum omittam ad, vix aperiam sententiae an.费里指责 eos, an facete tractatos moderatius sea{"firstName":"Peter", “姓氏”:“琼斯”}。 Mel ad sale utamur, qui ut oportere omittantur, facer ludus dicant 中的 eos。
假设存在以下数据模型:
public class Person
{
public string firstName;
public string lastName;
}
我如何使用正则表达式从该文本中提取 JSON 并创建一个 List<Person> :
{"firstName":"John", "lastName":"Doe"},
{"firstName":"Anna", "lastName":"Smith"},
{"firstName":"Peter", "lastName":"Jones"}
对象可以隐藏在字符串中的任何位置,因此它们相对于单词、字母、标点符号、空格等的位置无关紧要。如果上面的 JSON 符号被破坏,只需忽略它。以下内容无效:
{"firstName":"John", "middleName":"", "lastName":"Doe"},
{"firstName":"Anna", "lastName":"Smith", "age":""},
{"firstName":"Peter", "lastName":"Jones" some text}
换句话说,模式搜索必须严格遵守以下几点:
{"firstName":"[val]", "lastName":"[val]"}
【问题讨论】:
-
必须是正则表达式吗?使用过程代码可能更容易做到这一点。
-
不,它不必是正则表达式。只需要完成它。
-
您不应该将 Regex 与 JSON 等分层数据一起使用,原因与 XML 相同
-
在 Micky 看来,嵌套 JSON 对象是否合法?我会假设是这样,这取决于它来自哪里。或者,同样令人沮丧的是,我假设您可能有一个包含花括号的字符串?我想没有人会拥有一个名字,但它是完全有效的 JSON。
-
嵌套对象目前不是问题。啊,从来没有想过中间的花括号。我可以改为使用另一个符号或子字符串,并禁止用户输入它。