加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 提取键值对

发布时间:2020-12-15 23:42:58 所属栏目:百科 来源:网络整理
导读:我正在研究Rest api.它工作正常.当我提出要求时,它会向我发送回复.实际上,这个响应是一个由子数组和其他键组成的数组:它们中的值对.现在我想在C#中提取这些键:值对.我想到正则表达式提取子字符串但我还没有正则表达式的知识.但我试着先得到子数组. 输入字
我正在研究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"
  }
]

正则表达式的C#代码

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

        foreach(var matchgroup in match.Groups)
            Console.WriteLine(matchgroup);
    }

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

"id": "1","image": "1393602_698558840157121_1872079026_n.jpg"

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

所以我的问题是:

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

解决方法

您不必使用正则表达式.
您尝试解析的数据采用JSON格式.

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

Dictionary<string,dynamic> MyData = JsonConvert.DeserializeObject<Dictionary<string,dynamic>>(JsonData);

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

Dictionary<string,dynamic> MyData = JavaScriptSerializer.Deserialize<Dictionary<string,dynamic>>(JsonData);

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读