2013-07-16 29 views
0

我有一個json字符串,我只想抓住數據節點中的數組。我是否使用RegEx進行修剪或者提取json字符串部分的最佳方法是什麼?如何通過C#RegEx修剪和提取JSON字符串?

這裏有一個例子:

{ 
    "Data":[ 
     { 
     "Title":"Test Item 1", 
     "Icon":"pdf", 
     "PublicationDate":"2013-05-08T18:23:18.037Z" 
     }, 
     { 
     "Title":"Test Item 2", 
     "Icon":"pdf", 
     "PublicationDate":"2013-05-08T18:23:38.177Z" 
     } 
    ], 
    "Count":67 
} 

下面是我想結束了一下:

[ 
     { 
     "Title":"Test Item 1", 
     "Icon":"pdf", 
     "PublicationDate":"2013-05-08T18:23:18.037Z" 
     }, 
     { 
     "Title":"Test Item 2", 
     "Icon":"pdf", 
     "PublicationDate":"2013-05-08T18:23:38.177Z" 
     } 
    ] 

我怎樣才能做到這正常嗎?有時候json字符串已經來了,因爲我只需要數據節點中的數組,所以邏輯必須足夠聰明才能忽略它,如果它已經以這種格式出現的話。原因是因爲我將兩種情況都送到JsonConvert.DeserializeObject<List<dynamic>>(json)。謝謝你的幫助!

+0

這將是一個萬次容易只是反序列化然後抓住數組內容了..而不是剝離json的內容,調試格式錯誤的json等 –

+0

但json字符串可以以任何形式出現,所以我不知道它是否有數據節點或只是一個數組。這是一個通用的方法,所以它必須處理兩個json字符串。 – TruMan1

回答

0

閱讀您的意見後,似乎這就是你需要:

var jToken=JToken.Parse(data); 
JArray arr; 
switch(jToken.Type) 
{ 
    case JTokenType.Array: 
     arr=(JArray)jToken; 
     break; 
    case JTokenType.Object: 
     arr=(JArray)((JObject)jToken)["Data"]; 
     break; 
    default: 
     throw new Exception(); 
} 
var output=arr.ToString(); 
+0

我將如何測試是否存在「數據」節點。有時json返回給我的數組沒有數據或計數節點。 – TruMan1

+0

我的編輯幫助嗎? – spender

+0

非常感謝你! – TruMan1