【问题标题】:Returning JSON format from ASP.NET web API从 ASP.NET Web API 返回 JSON 格式
【发布时间】:2013-09-21 16:43:33
【问题描述】:

我知道这个问题已经讨论过很多次,但对我来说这些解决方案不起作用。我想从我的 ASP.NET Web API 返回 JSON 数据。我正在使用 Firefox REST 客户端插件达到终点。

我尝试过的:

  1. 我有特定的接受标头:Accept: application/jsonUse accept header

  2. 删除了 Application_Start 方法上的 XML 格式化程序

    var formatters = GlobalConfiguration.Configuration.Formatters;

    formatters.Remove(formatters.XmlFormatter);

这就是我最后返回数据的方式

 return myModel.OrderBy(d => d.SortOrder);

myModel 只是一个公共属性很少的类。我没有用任何属性装饰这个类或其属性。

但这两种方法都行不通。我仍在获取 XML 格式的数据:(

请提供您的建议。

【问题讨论】:

  • 向我们展示您的代码,我们无法根据此回答。
  • @RoyDictus:感谢您的快速回复。我不能在这个论坛上分享代码:(。我认为以 JSON 格式取回数据应该取决于一些配置设置。我希望有人能指出或建议一些有助于我获得结果的配置更改。
  • 您是直接从 api 返回实体而不是字符串结果等吗?
  • @Slicksim:这就是我返回的内容:- return myModel.OrderBy(d => d.SortOrder); myModel 只是一个公共财产很少的类。我没有用任何属性装饰这个类。
  • 你方法的返回类型是什么? orderby 将返回一个 Iorderable 不是吗?

标签: asp.net-mvc web-services rest asp.net-web-api


【解决方案1】:

来自评论

检查application/json 标头是第一个标头并且具有q=1 质量属性:"application/json;q=1"

您可以在specs 中阅读有关质量属性的更多信息。基本上,它们是客户在返回的数据类型上提供偏好系统的一种方式。

要回答您的其他问题(当我在代码中明确删除 XML 格式时,为什么我要以 XML 格式获取数据?),我只能猜测发生了什么:要么标头设置不正确或客户端将另一个标头默认设置为不同的质量值。

另一种猜测可能是您删除格式化程序的方式是错误的:您可以查看此answer on SO 或此article 以获取替代方法,看看它们是否也可以为您解决问题。

【讨论】:

    【解决方案2】:

    我想向你介绍http://www.servicestack.net/

    这是与 .net 挂钩的 REST API 框架。

    它可以满足您的一切需求。 https://docs.google.com/presentation/d/16ey0MrpHOSz5N5sjctAliOgYWO3ZYeJe070fLZlPdrE/present#slide=id.i27

    【讨论】:

    • 为一个简单的需求改变技术似乎有点过火
    • 它确实有效,但从长远来看会有所帮助,如果我们处于初始阶段并且项目是长期的,那么是时候做出改变以使我们免于未来的痛苦
    猜你喜欢
    • 2017-03-10
    • 2016-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-05
    相关资源
    最近更新 更多