【问题标题】:How do you provide JSON response data in .NET?如何在 .NET 中提供 JSON 响应数据?
【发布时间】:2009-05-07 15:58:03
【问题描述】:

在不使用任何第三方工具的情况下,提供 JSON 响应数据的理想方式是什么?

我正在考虑让一个 ASPX 应用程序页面只返回 json 字符串响应。有什么想法吗?

【问题讨论】:

    标签: .net ajax json response.write


    【解决方案1】:

    最简单的方法是创建一个带有[WebMethod]属性的方法,响应会自动被JSON序列化。自己试试吧:

    [WebMethod]
    public static string GetDateTime()
    {
        return DateTime.Now.ToString();
    }
    

    Ajax 调用 URL 将是:

    Page.aspx/GetDateTime

    编辑:

    要传递参数,只需将它们添加到函数中:

    [WebMethod]
    public static int AddNumbers(int n1, int n2)
    {
        return n1 + n2;
    }
    

    我正在使用 jQuery,所以 data: 对象将设置为:

    data: "{n1: 1, n2: 2}",
    

    另请注意,返回的 JSON 对象将如下所示:

    {"d":[3]}
    

    数据中多余的"d"在这里解释:http://encosia.com/2009/02/10/a-breaking-change-between-versions-of-aspnet-ajax/

    【讨论】:

    • 你将如何传递参数?
    【解决方案2】:

    不是一个 aspx 页面,而是一个 ashx 处理程序。为了使这更容易,.Net 3.5 内置了serialization support for JSON

    【讨论】:

    • 因为您不需要完整的页面生命周期。一个 aspx 页面会导致一堆你不需要的工作发生 - 这是浪费。
    • +1 - 如果他对同一个函数执行多个请求,这绝对值得注意
    • 嗯...我的基本文本是正确的,但我的链接可能是错误的 json 序列化程序。
    【解决方案3】:

    查看 ASP.NET 框架提供的 JavascriptSerializer 类。通常,您会在 WebService 中的 Page Method 或 WebMethod 中使用它来返回序列化为 JSON 的对象。

    请参阅MSDN here 上的参考资料。

    【讨论】:

      【解决方案4】:

      我通常使用带有 ScriptService 属性和 ScriptManager 的 Web 服务 (asmx)。与一些 jQuery 插件有一些轻微的不兼容,但并不严重,我不必处理任何手动序列化。

      【讨论】:

        猜你喜欢
        • 2012-04-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-11-10
        • 1970-01-01
        • 2021-11-12
        • 2017-11-18
        • 1970-01-01
        相关资源
        最近更新 更多