首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何让ASMX文件输出JSON

如何让ASMX文件输出JSON
EN

Stack Overflow用户
提问于 2008-10-17 07:50:37
回答 4查看 126.7K关注 0票数 64

我创建了一个带有代码隐藏文件的ASMX文件。它工作得很好,但它正在输出XML。

但是,我需要它来输出JSON。ResponseFormat配置似乎不起作用。我的代码隐藏是:

代码语言:javascript
复制
[System.Web.Script.Services.ScriptService]
public class _default : System.Web.Services.WebService {
    [WebMethod]
    [ScriptMethod(UseHttpGet = true,ResponseFormat = ResponseFormat.Json)]
    public string[] UserDetails()
    {
        return new string[] { "abc", "def" };
    }
}
EN

回答 4

Stack Overflow用户

发布于 2012-11-22 19:32:47

要接收纯JSON字符串而不将其包装到XML中,必须将JSON字符串直接写入HttpResponse,并将WebMethod返回类型更改为void

代码语言:javascript
复制
    [System.Web.Script.Services.ScriptService]
    public class WebServiceClass : System.Web.Services.WebService {
        [WebMethod]
        public void WebMethodName()
        {
            HttpContext.Current.Response.Write("{property: value}");
        }
    }
票数 58
EN

Stack Overflow用户

发布于 2008-10-21 21:19:34

我花了4个小时在Google上学到了一个快速的陷阱,你可以在ASPX文件中使用PageMethods来返回一个静态方法的JSON (带有ScriptMethod()标记),但是如果你决定将你的静态方法转移到asmx文件,它就不能是一个静态方法。

此外,您还需要告诉web服务Content-Type: application/json,以便从调用中返回JSON (我使用的是jQuery,3 Mistakes To Avoid When Using jQuery的文章非常有启发性-它来自另一个答案中提到的同一网站)。

票数 9
EN

Stack Overflow用户

发布于 2008-10-17 10:38:54

您是从客户端脚本还是在服务器端调用web服务?

您可能会发现向服务器发送内容类型标头会有所帮助,例如

‘'application/json;charset=utf-8’

在客户端,我使用prototype客户端库,在进行Ajax调用时有一个contentType参数,您可以在其中指定该参数。我认为jQuery有一个getJSON方法。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/211348

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档