2016-05-16 43 views
1

嗨,我有get方法返回俗JSON格式的Web API反斜槓:爲什麼JSON響應包括網頁API響應

問題:爲什麼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); 
    } 
} 
+0

它逃避字符串中的引號。 –

回答

3

您正在序列化兩次相同的對象。當您第一次手動序列化使用它:

Newtonsoft.Json.JsonConvert.SerializeObject(data) 

然後您返回另一個對象,框架本身會序列,這將導致其逃避叫data字符串對象中的字符。

不要手動序列化您的數據,讓框架做繁重:

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

逃離報價

有反斜槓,逃避字符串中的引號。否則,引號將像正常一樣行動並結束/開始一個字符串。