c# - ASP.NET MVC4 Web API MediaTypeFormatter Converter 将 XElement 转换为 JSON

标签 c# xml json asp.net-mvc-4 asp.net-web-api

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

相关文章:

javascript - 使用传播运算符的对象复制实际上是浅的还是深的?

c# - 将 DLL Controller 添加到 ASP.NET MVC 项目

c# - 使用 css 从母版页覆盖导航

c# - 添加文本时如何防止多行文本框滚动?

c# - 使用 LINQ 编辑 XML 输出

.net - XmlDocument.LoadXml() 挂了几分钟

java - Spring 4.1.4 和 Jackson 2.5,注释驱动设置不将 REST 响应转换为 JSON

php - JSONPath 查询获取节点名称?

c# - 当客户端脚本显示时正确调整 ModalPopupExtender 的大小

python - 将 .CSV 文件转换为 .XML