【发布时间】:2015-09-12 22:49:36
【问题描述】:
NET MVC Web API,我创建了一个响应类,以便所有路由返回相同的响应模式,
[DataContract]
public class Response
{
[DataMember]
public string ResponseMessage { get; set; }
[DataMember]
public int ResponseCode { get; set; }
[DataMember]
public object ResponsePayload { get; set; }
}
我从所有路由调用 APIResponse 方法来返回响应,每次我会在下面函数的对象 responseObj 参数中传递 DataTable 或 DataSet,我必须使用 ADO.NET DB 访问层,:)
private Object APIResponse(object responseObj, string _message = Constants.RESPONSE_MESSAGE_SUCCESS, int code = _RESPONSE_SUCCESS_CODE)
{
Response _response = new Response();
_response.ResponsePayload = responseObj;
_response.ResponseMessage = _message;
_response.ResponseCode = code;
return Newtonsoft.Json.JsonConvert.SerializeObject(_response);
}
如果我的 responseObj 参数是 DataSet 类型,那么我会得到不需要的引号和反斜杠(如果在服务器上启用了魔术引号,就像在 PHP 中一样),它们会产生无效的 JSON, 你能帮我解决这个问题吗,删除这些斜线,
示例 JSON:
"{\"ResponseMessage\":\"Success\",\"ResponseCode\":200,\"ResponsePayload\":{\"StatusList\":[{\"StatusId\":1,\"Status\":\"To Be Dispatched\", ...........
【问题讨论】:
-
在DataTable的情况下创建正确的Json,在DataSet的情况下只创建无效的Json,
-
这绝对是返回的 JSON 而不仅仅是 Visual Studio 调试器的“快速视图”表示吗? (这将添加反斜杠。)
-
这是我可以在浏览器中看到的 JSON 响应,
-
为什么要在 HTTP 之上重新发明 HTTP? HTTP 已经为此目的提供了 HttpStatusCode 和 ReasonPhrase。
-
@DarrelMiller ,我尝试了 HttpResponse 但这对我不起作用,我的 DataTable/DataSet 需要 Json,你能帮帮我吗?
标签: asp.net-mvc web-services asp.net-web-api