从json字符串中的键字符串替换或删除Dote(。)以插入mongodb

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从json字符串中的键字符串替换或删除Dote(。)以插入mongodb相关的知识,希望对你有一定的参考价值。

我想用C#Driver将Json插入mongoDB,我得到异常,因为你不能用包含Dot(。)的键插入json现在我想用_或其他东西替换Keys中的所有Dots ...

我试试这个:((?<=(w))(.)(?=(w+)))

它选择字符串之间的所有点但问题是无法验证密钥例如,如果我在Json值中有网站名称也选择网站名称中的点...现在我需要一种方法来找到所有点之间的所有点(“ :)它是json的一个样本:

"activity:12356", "permalink": "https://www.hostname.com/fff/update    /urn:li:activity:123465", "tracking": {"trackingId": "sdjahgs/sfkdjk=="}, "value": {"com.site.aaaa.bbb.ccc": {"actor": {"com.aaa.sss.ddd.wwww": {"urn": ....

在这里我想用“com_aaa_sss_ddd_wwww”替换“com.aaa.sss.ddd.wwww”,但我的正则表达式在www.hostname.com中选择了点

我也尝试像((?<=(w))(.)(?=(w+)))(":$)但不工作

答案

仅使用正则表达式来实现它是相当困难的,但是简单的正则表达式结合额外的代码来替换点将为您提供所需的结果:

var s = @"""activity:12356"", ""permalink"": ""https://www.hostname.com/fff/update    /urn:li:activity:123465"", ""tracking"": {""trackingId"": ""sdjahgs/sfkdjk==""}, ""value"": {""com.site.aaaa.bbb.ccc"": {""actor"": {""com.aaa.sss.ddd.wwww"": {""urn"": ....";
var matches = Regex.Matches(s, @"""[^""]+"":");
foreach (Match match in matches)
{
  var replace = match.Value.Replace('.', '_');
  s = s.Replace(match.Value, replace);
}

使用的模式:"[^"]+":,意思是:

匹配",然后匹配一个或多个"以外的[^"]+,并最终匹配":字面上。

以上是关于从json字符串中的键字符串替换或删除Dote(。)以插入mongodb的主要内容,如果未能解决你的问题,请参考以下文章

PHP使用字符串替换从多维数组中的键值替换关键字

在所有文件中找到JSON键,并删除相应的键值对。

替换函数 - 没有重载方法错误 C# - 试图删除字符串中的部分

我需要从嵌套在 JSON 对象中的名为 token 的字段中解析或提取字符串,以便替换会话令牌的电子邮件和密码

如何在胶合时分离(带有空格)字符串,使用数组中的键来检查它是否粘合?

tr 替换或删除字符