如何通过C#RegEx修剪和提取JSON字符串?

时间:2013-07-16 23:27:31

标签: c# regex json json.net

我有一个json字符串,我只想抓取数据节点中的数组。我是否使用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)。谢谢你的帮助!

1 个答案:

答案 0 :(得分: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();