【问题标题】:ASP.NET Web API, Unwanted Quotes and Backslashes in JsonASP.NET Web API,Json 中不需要的引号和反斜杠
【发布时间】: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


【解决方案1】:

你应该像这样定义你的 Get

public IEnumerable<string> Get(int id1)

public List<Response> Get( int id1)

而不是这个

public string Get(int id1)

【讨论】:

    猜你喜欢
    • 2016-12-02
    • 1970-01-01
    • 2015-02-27
    • 1970-01-01
    • 2018-02-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-05
    相关资源
    最近更新 更多