我正在 ASP.NET MVC4 Web API 中构建 API,并且我的操作之一返回 XML(当前采用 XElement 的形式)。我无法控制数据,我只是传递它。没有可以将其反序列化为的标准对象。
public Task<XElement> Get( string queryName, string query )...
我想要做的是使用 MediaTypeFormatter 将其转换为 JSON(如果有这样的请求)。我已经开始编写 MediaTypeFormatter 并将其连接起来,但是当我在 Controller 上调用“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 Converter 将 XElement 转换为 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9578109/