为什么json响应包含web api响应中的反斜杠

时间:2016-05-16 14:36:21

标签: json asp.net-web-api

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

问题:为什么json值包含“/ characters

返回:

{
  "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);
    }
}

2 个答案:

答案 0 :(得分:3)

您正在对同一个对象进行两次序列化。第一次使用以下方法手动序列化它时:

Newtonsoft.Json.JsonConvert.SerializeObject(data)

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

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

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

答案 1 :(得分:0)

转义引号

反斜杠正在转义字符串中的引号。否则,引号将正常运行并结束/开始一个字符串。