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)
这意味着它正在删除正好的外部括号,而不是内部的括号.
所以我的问题是:
你不必使用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)