我正在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/