【问题标题】:How to create a web service which returns JSON rather than XML for GET and POST (no AJAX)?如何为 GET 和 POST(无 AJAX)创建返回 JSON 而不是 XML 的 Web 服务?
【发布时间】:2011-02-11 06:30:10
【问题描述】:

我想创建一个 Web 服务,它在 ASP.NET 中以 JSON 形式返回结果,并带有 HTTP GET 和 POST 绑定。

换句话说,我想要一个 web 服务,如果在浏览器中键入它的 url,它将返回 JSON。 XML 表示在 NET 3.5 中自动完成。

我知道我可以使用 ScriptMethod(如下所示)使 ajax 调用返回 JSON,但这不是我想要的。

[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public SomeClass Example()

【问题讨论】:

  • 那么你到底在追求什么?
  • 您没有使用 WCF 有什么原因吗?
  • Re: Shiv: 我想要一个rest API,它可以根据某些东西(路径或url中的额外参数)返回JSON和XML。
  • Re: John: 因为我可以使用 [WebMethod] 获取 XML,但我不知道 WCF。但你是对的 WCF 是要走的路。

标签: asp.net web-services json asmx


【解决方案1】:

好的,所以你说(如果我理解正确的话),Web 服务使用 SOAP,而 JSON 不是 SOAP 的一部分。 JSON 是它自己的协议。所以你真的不想使用 Web Service 框架?

如果是这样,那么您可以使用一个简单的 HttpHandler 以 JSON 的形式返回一些数据

这是一个例子 http://johnnycoder.com/blog/2008/12/16/httphandler-json-data/

【讨论】:

  • Shiv:回复:“Web 服务使用 SOAP,而 JSON 不是 SOAP 的一部分”。是的,但是您可以通过 [WebMethod] 免费获得 HTTP GET 和 HTTP POST。当然,我可以自己将输出写入流,但这并不是真正使用框架。
  • @John,好吧,我没说不要使用它。 OP 说他不是他所追求的,所以我提供了另一种选择。
  • @Tymek,如果您正在寻找开箱即用的东西,那么 WCF 就是这样做的方法。使用 Handler 你也可以做到这一切。非常简单,您正在使用一个框架。如果您正在寻找 REST 框架(开箱即用),那么 WCF 是一种选择。如果您希望在没有 WCF 的情况下在您的应用程序中支持 REST,那么仅使用简单的 HttpHandlers 非常简单且重量轻。但是,在你弄清楚你在追求什么之前,恐怕我不知道还有什么可以建议的。你一直说你不想要什么,但并没有真正说出你想要什么:)
  • @Shiv:编辑你的答案以明确这一点,我会删除反对票(所以在你编辑之前不会让我删除它)。
  • @John,谢谢,重新写了我的答案以明确我在说什么。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-02-26
  • 2023-04-05
  • 2012-06-20
  • 1970-01-01
  • 2018-10-08
相关资源
最近更新 更多