解析包含多个JSON数据字符串的字符串
我遇到了一个问题,我无法找到一个好看的方法来解析包含多个JSON字符串的一个字符串,如{content1}{content2}{content3}
。解析包含多个JSON数据字符串的字符串
什么是解析这个字符串的好方法,因此结果将是:
{content1}
{content2}
{content3}
或许真的与正则表达式?
也许你可以使用string.Split
:
var output = input.Split(new[] {'{', '}'}, StringSplitOptions.RemoveEmptyEntries)
.Select(x => "{" + x + "}")
.ToList();
出于好奇,以及其他谁偶然发现这个答案,这实际上是做什么? – 2013-03-26 15:26:23
@PeterHerdenborg:代码已经显示了实际做了什么,我可以添加链接更清晰 – 2013-03-26 15:38:51
您可以使用正则表达式:
string input = "{content1}{content2}{content3}";
var matches = Regex.Match(input, "(?:({[^}]+}) *)*");
string[] contents = matches.Groups[1].Captures.Cast<Capture>().Select(c => c.Value).ToArray();
在像{Foo:{bar:'null'}} {...} {...}'的情况下,wouldn你的正则表达式提前停止匹配,即在它遇到的第一个'}'处? – 2013-03-26 15:21:13
是的,会的。但是示例输入不显示任何这种情况。 – MarcinJuraszek 2013-03-26 15:21:58
我认为这些是占位符,而不是样本输入,虽然... – 2013-03-26 15:25:40
如果你肯定知道每个JSON部分是对象文本,我想你可以简单地拆分字符串}\s*{
,因为这在有效的JSON中永远不会发生。
我会研究JSON.NET来解析JSON字符串到对象中。 – 2013-03-26 15:11:02
这不是JSON格式 – 2013-03-26 15:11:24
@Congong这只是一个例子。最重要的部分是花括号,它将用于算法来知道一个JSON开始和另一个结束。 – 2013-03-26 15:16:15