提取键值对

Raf*_*Mir 3 .net c# regex arrays json

我正在研究Rest api.它工作正常.当我提出要求时,它会向我发送回复.实际上,这个响应是一个由子数组和其他键组成的数组:它们中的值对.现在我想在C#中提取这些键:值对.我想到正则表达式提取子字符串但我还没有正则表达式的知识.但我试着先得到子数组.

输入字符串是

[
  {
    "id": "1",
    "name": "kashif",
    "father_name": "mirza",
    "contact": "21321",
    "email": "sdf",
    "image": "sdfsdf"
  },
  {
    "id": "2",
    "name": "Kashif",
    "father_name": "Mirza",
    "contact": "0342809211",
    "email": "shadbagh@wele.com",
    "image": "photo[1].jpg"
  },
  {
    "id": "3",
    "name": "Abdussadiq",
    "father_name": "Abdul Haq Khan",
    "contact": "03449066113",
    "email": "abdus.sadiq04@gmail.com",
    "image": "1393602_698558840157121_1872079026_n.jpg"
  }
]
Run Code Online (Sandbox Code Playgroud)

正则表达式的C#代码

 Match match = Regex.Match(input, @"(?<=\{)(.*)(?=\})",
        RegexOptions.IgnoreCase);
if (match.Success)
    {

        foreach(var matchgroup in match.Groups)
            Console.WriteLine(matchgroup);
    }
Run Code Online (Sandbox Code Playgroud)

它返回结果,但不是根据我的需要.它让我回归

    "id": "1",
    "name": "kashif",
    "father_name": "mirza",
    "contact": "21321",
    "email": "sdf",
    "image": "sdfsdf"
  },
  {
    "id": "2",
    "name": "Kashif",
    "father_name": "Mirza",
    "contact": "0342809211",
    "email": "shadbagh@wele.com",
    "image": "photo[1].jpg"
  },
  {
    "id": "3",
    "name": "Abdussadiq",
    "father_name": "Abdul Haq Khan",
    "contact": "03449066113",
    "email": "abdus.sadiq04@gmail.com",
    "image": "1393602_698558840157121_1872079026_n.jpg"
Run Code Online (Sandbox Code Playgroud)

这意味着它正在删除正好的外部括号,而不是内部的括号.

所以我的问题是:

  1. 我在上面的代码中做错了什么?
  2. 如果我必须得到关键:价值对那么我还需要做什么?

Jus*_*man 7

你不必使用regex它.
您尝试解析的数据是JSON格式化的.

例如,您可以使用Json.NET解析它

Dictionary<string, dynamic> MyData = JsonConvert.DeserializeObject<Dictionary<string, dynamic>>(JsonData);
Run Code Online (Sandbox Code Playgroud)

如果你想要一个原生支持,试试JavascriptSerializer(它还给你一个如何将它直接解析成类的例子,这比关于你的JSON数据结构的字典更好)

Dictionary<string, dynamic> MyData = JavaScriptSerializer.Deserialize<Dictionary<string, dynamic>>(JsonData);
Run Code Online (Sandbox Code Playgroud)