我遇到了一個問題,我無法找到一個好看的方法來解析包含多個JSON字符串的一個字符串,如{content1}{content2}{content3}
。解析包含多個JSON數據字符串的字符串
什麼是解析這個字符串的好方法,因此結果將是:
{content1}
{content2}
{content3}
或許真的與正則表達式?
我遇到了一個問題,我無法找到一個好看的方法來解析包含多個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