C#RESTful API服务返回XML但如何使其成为JSON

时间:2016-04-17 22:02:15

标签: c# json asp.net-web-api

我创建了(在这里有一些帮助)我的RESTful API服务。我工作得很好,但返回的数据是XML格式,我希望它是在JSON中。这是一组数据。检索数据的方法是:

   public IEnumerable<Photo> GetAllPhotos()
    {
        return photos;

    }

    public IHttpActionResult GetPhotoById(int PhotoId)
    {

        var photos= Array.FindAll(photos, x => x.PhotoId== PhotoId);
        if (photos== null)
        {
            return NotFound();
        }
        return Ok(photos);
    }

但有一个要求是将数据作为JSON返回。

2 个答案:

答案 0 :(得分:3)

这种情况正在发生,因为您的浏览器会在其text/xml标头中发送Accept,并且Web API支持内容协商。

要删除XML格式化程序,请将其添加到应用程序的启动代码中:

var configuration = GlobalConfiguration.Configuration;

configuration.Formatters.Remove(configuration.Formatters.XmlFormatter);

答案 1 :(得分:0)

当然,Web浏览器希望以他们能够最好地理解和使用的格式接收数据。通常,这意味着text/html

如果您不想使用它们,可以从格式化程序列表中删除JSON格式化程序或XML格式化程序。这样做的主要原因是:

将您的网址API响应限制为特定媒体类型。例如,您可能决定仅支持JSON响应,并删除XML格式化程序。

以下代码显示了如何删除默认格式化程序。从您在 Global.asax

中定义的Application_Start方法中调用此方法
void ConfigureApi(HttpConfiguration config)
{
    // Remove the JSON formatter
    config.Formatters.Remove(config.Formatters.JsonFormatter);

    // or

    // Remove the XML formatter
    config.Formatters.Remove(config.Formatters.XmlFormatter);
}

老实说,当你真正提炼它时,最好的答案是不要使用浏览器来测试你的API。为什么?因为这不是浏览器最擅长的,并且有大量工具可以让您更轻松地测试API。他们都是自由的。你应该使用它们,因为在浏览器中测试API(在插件或检查器之外)是一个愚蠢的游戏。

来源http://www.asp.net/web-api/overview/formats-and-model-binding/json-and-xml-serialization