【问题标题】:Why json response includes backward slashes in web api response为什么 json 响应在 web api 响应中包含反斜杠
【发布时间】:2016-09-12 09:29:18
【问题描述】:

您好,我有一个带有 get 方法的 web api,并返回 custum json 格式:

问题:为什么json值包含“/”字符

返回:

{
  "success": true,
  "message": "",
  "code": 200,
  "data": "\"{\"token\":\"E013D7050A8C4447989651D29AD3E637\"}\""
}

我的返回码:

return new HttpResponseBody(true, message, (int)System.Net.HttpStatusCode.OK, data != null ? Newtonsoft.Json.JsonConvert.SerializeObject(data) : data);

我的响应类;:

 public class HttpResponseBody
{
    public bool success;
    public string message;
    public int code;
    public object data;

    public HttpResponseBody(bool success, string message, int code, object data)
    {
        this.success = success;
        this.message = message;
        this.code = code;
        this.data = data;
    }

    public static HttpResponseBody Success(object data = null, string message = "")
    {
        return new HttpResponseBody(true, message, (int)System.Net.HttpStatusCode.OK, data != null ? Newtonsoft.Json.JsonConvert.SerializeObject(data) : data);
    }

    public static HttpResponseBody Error(System.Net.HttpStatusCode code, string message)
    {
        return new HttpResponseBody(false, message, (int)code, null);
    }
}

【问题讨论】:

  • 它正在转义字符串内的引号。

标签: json asp.net-web-api


【解决方案1】:

您正在序列化同一个对象两次。第一次使用手动序列化它:

Newtonsoft.Json.JsonConvert.SerializeObject(data)

然后您将返回另一个框架本身将序列化的对象,这将导致它转义名为 data 的字符串对象中的字符。

不要手动序列化您的数据,让框架完成繁重的工作:

return new HttpResponseBody(true, message, (int)System.Net.HttpStatusCode.OK, data);

【讨论】:

    【解决方案2】:

    转义引号

    反斜杠转义字符串内的引号。否则,引号将像正常一样以字符串结尾/开头。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-10-26
      • 2015-02-19
      • 2014-10-14
      • 2018-12-02
      • 1970-01-01
      • 2020-12-01
      • 1970-01-01
      • 2020-05-11
      相关资源
      最近更新 更多