删除“d”来自 ASP.Net Web 服务 json 输出的对象

发布于 2024-09-01 02:36:19 字数 219 浏览 4 评论 0原文

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

我的 javascript 代码假定一个对象列表作为返回值,这在 2.0 中工作得很好。然而,在框架 3.5 中,列表被包装在“d”对象中。有什么方法可以删除“d”包装并仅返回列表吗?

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

I have some javascript code that processes json output from asp.net web services built with framework 2.0. Now I need to support data returned from framework 3.5 web services.

My javascript code assumes a list of objects as return value, which works fine in 2.0. However In framework 3.5, the list is wrapped in a "d" object. Is there any way I can remove the "d" wrapper and just return the list?

I would prefer to fix this onthe server side

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

写给空气的情书 2024-09-08 02:36:19

这是解决这个问题的方法

    [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);
    }

Here is a way around that

    [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);
    }
丢了幸福的猪 2024-09-08 02:36:19

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

ASP.NET AJAX 的客户端代理会自动对您隐藏 .d。如果它妨碍了您,我假设您正在使用 jQuery 之类的东西来调用服务? 您可以标准化 。例如,在 jQuery 中使用 DataFilter 回调来实现 d

You can't configure 3.5+ services not to return the .d. It's good that it's there too, because it protects from a tricky JSON hijacking scenario that exists when the outer JSON entity is an array.

ASP.NET AJAX's client-side proxies automatically hide the .d from you. If it's getting in your way, I'm assuming you're using something like jQuery to call the service? You can normalize the .d in jQuery by using its DataFilter callback, for example.

想你的星星会说话 2024-09-08 02:36:19

好吧,如果你有在客户端进行更改的优势,那么最好的方法是使用 jquery,你会找到大量的解决方案。但是如果你想删除服务层上的“d”,最好的方法是在Web Api中重写你的web服务(你也可以使用WCF)。 Web Api 不返回“d”作为响应。

Well if you have the advantage of changing on the client side then best way is using jquery and you will find a ton of solutions. But if you want to remove "d" on service layer the best way is rewrite your webservice in Web Api(You can use WCF also). Web Api does not return "d" in response.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文