如何在C#中修改匹配的值regex

时间:2017-11-09 14:02:38

标签: c# json regex replace

我正在尝试解析我收到的一些JSON。我收到的JSON包含我要删除的空格和下划线。

{"No_":"SL00101","Description":"Logies_3","Description_2":"","Customer No_":"1234","Name":"SomeName"}

使用以下正则表达式匹配

([a-zA-Z0-9_ ]*\":)

我想将变量更改为没有任何下划线或空格。 所以: 否_变为否

并且

客户No_成为CustomerNo。

我尝试过替换和替换,但我找不到如何修改匹配的值。

例如

var newJason = Regex.Replace(json, "(?<variableName>([a-zA-Z0-9_ ]*\":))", "${variableName}".Replace(" ", string.Empty));

2 个答案:

答案 0 :(得分:1)

所以你想重命名你的json属性,可能是因为你想在c#

中找到合适的名字

通过NuGet添加Newtonsoft.Json库,并使用JsonProperty属性设置属性名称。

public class YourClass
{
   [JsonProperty(PropertyName = "No_")]
   public string No{ get; set; }

   [JsonProperty(PropertyName = "Customer No_")]
   public string CustomerNo{ get; set; }
}

现在可以使用遵循命名约定的属性反序列化到c#类。

使用

反序列化
var yourClassInstance = Newtonsoft.Json.JsonConvert.DeserializeObject<YourClass>("yourJsonString");

答案 1 :(得分:-1)

这可能会对您有所帮助:

var jsonString = "";
var obj = JSON.parse(json);
jsonString += "{";
for (var key in obj) {
    jsonString += '"' + key.replace("/_/g","").replace("/ /g","") + ":" + obj[key] + '",'
}
jsonString = jsonString.slice(0,-1)  //we remove the last comma (,)
jsonString += "}";                   //and we close the future json object 

然后,您可以添加var resultJsonObject = JSON.parse(jsonString)以获取最终的json对象