从ASP.Net Web服务json输出中删除"d"对象

Mid*_*hat 5 javascript asp.net json .net-3.5 .net-2.0

我有一些javascript代码,用于处理使用framework 2.0构建的asp.net Web服务的json输出.现在我需要支持从框架3.5 Web服务返回的数据.

我的javascript代码假设一个对象列表作为返回值,在2.0中工作正常.但是在框架3.5中,列表包含在"d"对象中.有什么办法可以删除"d"包装并返回列表吗?

我宁愿在服务器端解决这个问题

Dav*_*ard 5

您不能配置3.5+服务不返回.d.它也很好,因为它可以防止当外部JSON实体是一个数组时存在的棘手的JSON劫持场景.

ASP.NET AJAX的客户端代理会自动隐藏.d您.如果它妨碍了你,我假设你正在使用类似jQuery的东西来调用服务? 例如,您可以.d使用其DataFilter回调来规范化jQuery.


Lir*_*niv 5

这是一种解决方法

    [WebMethod]
    [ScriptMethod(UseHttpGet = true, ResponseFormat = ResponseFormat.Json)]
    public void Status()
    {
        MyObject myObject = new MyObject(); // your object here
        var json = Newtonsoft.Json.JsonConvert.SerializeObject(myObject);

        HttpContext.Current.Response.Write(json);
    }
Run Code Online (Sandbox Code Playgroud)

  • 一旦我看到你的答案就很明显了。我仍然在我的 json 响应对象之后得到 d json 对象,所以我添加了 ...Response.Flush() 和 ...Response.End() 以完全摆脱它。谢谢你。 (2认同)