我正在ASP.NET MVC4 Web API中构建一个API,我的一项操作返回了XML(当前以XElement的形式)。我无法控制数据,我只是将其传递。我没有反序列化到的标准对象。

public Task<XElement> Get( string queryName, string query )...


我想要做的是使用MediaTypeFormatter将其转换为JSON(如果这样请求)。我已经开始编写MediaTypeFormatter并将其连接起来,但是当我在控制器上调用“ Get”时,它将调用

protected override bool CanWriteType( Type type )
{
    return true;
}


在MediaTypeFormatter中,但是永远不会达到OnWriteToStreamAsync方法。结果只是将XML作为字符串,例如

"<testXmlHere\/>"


有谁知道如何解决这个问题?

谢谢

最佳答案

您的自定义格式器可能已插入格式器集合中JsonMediaTypeFormatter之后的格式器列表中。该格式化程序可以编写XElement,并且可以通过将XML表示形式编写为JSON字符串来实现(这是好是坏是另一个讨论)。将格式化程序添加到集合中时,请使用Insert而不是Add方法:

GlobalConfiguration.Configuration.Formatters.Insert(
    0, new MyCustomMediaTypeFormatter());

关于c# - ASP.NET MVC4 Web API MediaTypeFormatter转换器,用于将XElement转换为JSON,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9578109/

10-09 15:52