如何从Json字符串中删除转义字符?

时间:2015-01-13 21:23:28

标签: javascript c# .net json

我有一个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响应中看到转义字符。

如果我尝试将person字符串反序列化为我的C#User对象,则它不会正确反序列化:

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

我有什么选择?如何从person字符串中去除转义字符,或者将其正确地反序列化为User对象?

1 个答案:

答案 0 :(得分:3)

如果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,requestBehaviour)方法。