在正则表达式 C# 中转换 json 的最有效方法
Posted
技术标签:
【中文标题】在正则表达式 C# 中转换 json 的最有效方法【英文标题】:Most efficient way to convert json in regex C# 【发布时间】:2016-09-02 03:10:51 【问题描述】:json:
["Command":"Notificaion-:hi","ID":"142245","AnotherColumn":"data1",
"Command":"Notificaion-:hi2","ID":"14255","AnotherColumn":"data2",
"Command":"Notificaion-:hi5","ID":"1421245","AnotherColumn":"data4",
"Command":"Notificaion-:hi3","ID":"14221145","AnotherColumn":"data2"]
我正在考虑使用 MatchCollection,其中每个匹配项都来自 ...。奇数组号是列名,par 列号是数据。
我坚持:
(?:(?:(?:\"(.*?)\":)\"(.*?)\",))+?(?:\"(.*?)\":)\"(.*?)\"
和
(?:(?:(?:\"(.*?)\":)\"(.*?)\",))*?(?:\"(.*?)\":)\"(.*?)\"
这些都没有达到预期的效果。
【问题讨论】:
处理 JSON 的最有效方法是使用 JSON 解析器,而不是正则表达式...例如,您可以使用javascriptSerializer
,它是 .NET 框架的一部分。你有特别想要正则表达式的理由吗?
您确定要使用正则表达式解析 JSON 吗?有几个图书馆可以为你做这件事。 (当然,除非是为了你自己的娱乐,但我不明白你为什么会在这里寻求帮助)。
我很清楚很多..很多..很多库及其效率我正在寻找,但是,用正则表达式解析它
@Zananok 为什么?只是为了自娱自乐吗?如果是这样,最好先说出是哪一部分让你绊倒,然后寻求解决方案,因为这样你会学得更好。
我不会把它称为我的娱乐,它的目的是为了别的,但最好用那个 JSON 字符串来解释。我被困在循环的第一部分: (?:(?:\"(.*?)\":)\"(.*?)\",))+?我无法获取所有列(和数据),它似乎跳过了最后一列或第一列
【参考方案1】:
(?:(?:"([^"]+)":"([^"]+)"(?:\s*,\s*)?))+
或
(?:(?:"(.+?)":"(.+?)"(?:\s*,\s*)?))+
列名在组 1 中捕获。值在组 2 中的捕获中。
【讨论】:
以上是关于在正则表达式 C# 中转换 json 的最有效方法的主要内容,如果未能解决你的问题,请参考以下文章
有一串json字符串,我需要将其中的时间格式从yyyy-M-d转换为yyyy/M/d,用c#的正则表达式替换的方法怎么写