如何配置C#Api直接从浏览器显示JSON?

How to configure C# Api to display JSON directly from browser? (but not XML)

本问题已经有最佳答案,请猛点这里访问。

首先,为了澄清这一点,我的C API工作正常。我可以从我的javascript中检索JSON数据。

但是,我很好奇,每当我通过浏览器直接访问我的API时,它会显示:enter image description here

但是,当我访问其他人(如myjson)托管的JSON时,他们可以直接从浏览器显示JSON:

enter image description here

这是我的代码,

1
2
3
4
5
public Object Get()
{
  ...// form object from my data
  return myObject;
}

是否需要配置?


在您的Application_Start上,您可以根据需要配置格式化程序。前任:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
protected void Application_Start()
{
     GlobalConfiguration.Configure(ServerConfig.Configure);
}

void Configure(HttpConfiguration config)
{
      var formatters = config.Formatters;
      var jsonFormatter = formatters.JsonFormatter;
      //"text/html" is the default browser request content type
      jsonFormatter.SupportedMediaTypes.Add(new
      MediaTypeHeaderValue("text/html"));
      WebApiConfig.Register(config);
      RegisterDependencies();
 }

首先,您没有指定要使用的框架版本。我想这是WebAPI 2。如果没有,你应该澄清。

在WebAPI 2中,如果控制器返回一个对象,它将被默认的序列化处理程序自动序列化。默认情况下,这个默认的处理程序将返回XML,但如果您请求它,也将返回JSON。您可以通过在HTTP请求接受头中指定来请求JSON版本。您还可以更改代码,使其在默认情况下不再返回XML。

以下代码直接从以下位置复制:如何让ASP.NET Web API返回JSON而不是使用chrome的XML?

I just add the following in App_Start / WebApiConfig.cs class in my
MVC Web API project.

1
2
config.Formatters.JsonFormatter.SupportedMediaTypes
    .Add(new MediaTypeHeaderValue("text/html") );