如何从 JSON 字符串中删除转义字符

How to remove escape characters from Json string?

本文关键字:删除 转义字符 字符串 JSON      更新时间:2023-09-26

我有一个c#方法,它调用另一个方法,该方法返回一个应该表示JSON的字符串。但是,字符串中包含转义字符:

public string GetPerson()
{
  string person = repo.GetPerson(); //person is  "{'"name'":jack,'"age'":'"54'"...
  return person;            
}

如果我尝试进行替换,则没有变化:

string person = repo.GetPerson().Replace(@"'""", ""); //person still has escape characters

当我在调试时尝试在文本查看器中查看人员时,转义字符不存在 - Visual Studio 会将它们撕掉。但是调用此方法的 javascript 确实在 ajax 响应中看到转义字符。

如果我尝试将人员字符串反序列化为我的 C# User 对象,它无法正确反序列化:

User user = JsonConvert.DeserializeObject<User>(person);

我有哪些选择?如何从 person 字符串中删除转义字符,或将其正确反序列化为 User 对象?

如果 Console.WriteLine(person) 在字符串周围显示这些反斜杠和引号(而不仅仅是里面的字符串和引号),则存在双重序列化问题。您可以先尝试将其反序列化为字符串,然后再反序列化为类型,如下所示:

User user = JsonConvert.DeserializeObject<User>(JsonConvert.DeserializeObject<String>(person));

此外,您可以尝试执行以下操作:

string person = repo.GetPerson().Replace(@"'""", @"""");

如果可以控制 API,请检查返回时是否存在双重序列化。ASP 执行默认序列化,因此通常不必返回带有对象预序列化的字符串。

对于webapi,请使用Ok(object),对于ASP MVC,请使用Json(object,requestBehavior)方法。