C#请求JSON接口时去除返回的JSON字符串中的转义字符
- ZHUWEI
- 2019-06-21 10:54:25
- 8323 赞(1) 踩(0)
C#请求JSON接口时去除返回的JSON字符串中的转义字符,之前java的时候没有碰到类似的问题,使用C#的时候就碰到查了半天,终于找到解决办法,费了不少时间,颇为蛋疼
之前java的时候没有碰到类似的问题,使用C#的时候就碰到查了半天,终于找到解决办法,费了不少时间,颇为蛋疼
C#通过HTTP接口时,返回json字符串格式是这样的:
"\"{\\\"code\\\":0,\\\"message\\\":\\\"\\\",\\\"userId\\\":1,\\\"loginName\\\":\\\"admin\\\",\\\"userName\\\":\\\"张三\\\",\\\"terminalId\\\":2,\\\"terminalName\\\":\\\" \\\"}\""
就问蛋疼不疼?好多的反斜杠转义字符
代码是这样的
/// <summary>
/// 获取请求的数据
/// </summary>
public static string GetResponseString(HttpWebResponse webResponse)
{
using (Stream s = webResponse.GetResponseStream())
{
StreamReader reader = new StreamReader(s, Encoding.UTF8);
string resp = reader.ReadToEnd();
reader.Close();
return resp;
}
}
然后开始解决:
一开始使用 Regex.Unescape(resp); 直接去除转义字符,
结果是否定的,仍旧在JObject respJson = JsonConvert.DeserializeObject<JObject>(resp); 转换时转义字符引起报错出异常,无法正常转换
最终解决使用Newtonsoft.Json.dll 中的方法,重新处理字符串:
public static string GetResponseStringJson(HttpWebResponse webResponse)
{
using (Stream s = webResponse.GetResponseStream())
{
StreamReader reader = new StreamReader(s, Encoding.UTF8);
string resp = reader.ReadToEnd();//Regex.Unescape(resp);
JsonReader readerJson = new JsonTextReader(new StringReader(resp)); //针对转义字符特殊处理
while (readerJson.Read())
{
resp = readerJson.Value.ToString();
}
readerJson.Close();
reader.Close();
return resp;
}
}
增加绿色标记这一段代码,问题彻底解决,这下蛋也不疼了