解析包含多个JSON数据字符串的字符串

问题描述:

我遇到了一个问题,我无法找到一个好看的方法来解析包含多个JSON字符串的一个字符串,如{content1}{content2}{content3}解析包含多个JSON数据字符串的字符串

什么是解析这个字符串的好方法,因此结果将是:

{content1}{content2}{content3}

或许真的与正则表达式?

+0

我会研究JSON.NET来解析JSON字符串到对象中。 – 2013-03-26 15:11:02

+0

这不是JSON格式 – 2013-03-26 15:11:24

+0

@Congong这只是一个例子。最重要的部分是花括号,它将用于算法来知道一个JSON开始和另一个结束。 – 2013-03-26 15:16:15

也许你可以使用string.Split

var output = input.Split(new[] {'{', '}'}, StringSplitOptions.RemoveEmptyEntries) 
        .Select(x => "{" + x + "}") 
        .ToList(); 
+0

出于好奇,以及其他谁偶然发现这个答案,这实际上是做什么? – 2013-03-26 15:26:23

+0

@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(); 
+0

在像{Foo:{bar:'null'}} {...} {...}'的情况下,wouldn你的正则表达式提前停止匹配,即在它遇到的第一个'}'处? – 2013-03-26 15:21:13

+0

是的,会的。但是示例输入不显示任何这种情况。 – MarcinJuraszek 2013-03-26 15:21:58

+0

我认为这些是占位符,而不是样本输入,虽然... – 2013-03-26 15:25:40

如果你肯定知道每个JSON部分是对象文本,我想你可以简单地拆分字符串}\s*{,因为这在有效的JSON中永远不会发生。