【发布时间】:2018-04-22 13:31:30
【问题描述】:
我正在尝试解析我收到的一些 JSON。我收到的 JSON 包含我想去掉的空格和下划线。
{"No_":"SL00101","Description":"Logies_3","Description_2":"","Customer No_":"1234","Name":"SomeName"}
使用下面的正则表达式匹配
([a-zA-Z0-9_ ]*\":)
我想将变量更改为不包含任何下划线或空格。 所以: No_变成No
还有
客户编号_变成客户编号。
我尝试了替换和替换,但我找不到如何修改匹配的值。
例如
var newJason = Regex.Replace(json, "(?<variableName>([a-zA-Z0-9_ ]*\":))", "${variableName}".Replace(" ", string.Empty));
【问题讨论】:
-
你看过
Regex.Replace吗? -
您最好使用 JSON 解析器,将结果转换为您想要的命名并序列化。这样你就不需要弄清楚什么是标识符和什么是值。 (由于 JSON 不是一种正则语言——在正式意义上——正则表达式不能用于可靠地处理它。)
-
为什么要替换下划线?您是否在将其映射到您的类时遇到问题?您可以通过属性指定备用映射,例如使用JsonProperty。您甚至可以指定自己的naming strategy 来处理下划线。无需更换
-
@PanagiotisKanavos 我希望它更改名称,以便它们匹配命名约定而无需手动映射:)
-
然后你就可以自己写NamingStrategy了