在正则表达式 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 的最有效方法的主要内容,如果未能解决你的问题,请参考以下文章

在 C# 字符串中摆脱零宽度空间的最简单方法

C# 正则表达式拆分为 Java 模式拆分

Java 正则表达式将字符串转换为有效的 json 字符串

有一串json字符串,我需要将其中的时间格式从yyyy-M-d转换为yyyy/M/d,用c#的正则表达式替换的方法怎么写

在不使用正则表达式的情况下,在NSString中计算单词数量的最有效方法是什么?

正则表达式替换 char 并在 .net C# 中转换为大写