2013-03-26 245 views
0

我遇到了一個問題,我無法找到一個好看的方法來解析包含多個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

回答

2

也許你可以使用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

0

您可以使用正則表達式:

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

0

如果你肯定知道每個JSON部分是對象文本,我想你可以簡單地拆分字符串}\s*{,因爲這在有效的JSON中永遠不會發生。