如何在不删除XML序列化程序的情况下将默认序列化程序设置为JSON

时间:2014-04-23 21:07:06

标签: asp.net-web-api asp.net-web-api2

是否可以在不删除XML的情况下使JSON成为WebApi2中的默认序列化程序?

我试图让XmlSerializer回来,JsonSerializer在前面,但似乎没有任何改变。

1 个答案:

答案 0 :(得分:1)

默认情况下,json格式化程序应该“赢”。 有一些事情决定格式化师将“赢”。

  1. JSON格式化程序甚至可以编写您的类型,您可能需要先验证它。如果你使用DataContractSerializer它有点挑剔,json.net版本表现得更好(默认情况下)。
  2. 如果您没有AcceptHeader,则内容协商员仍会查看请求的内容类型,并希望这样做。您的请求是否发送XML?
  3. 如果这两个问题都不是问题,那么内容协商员(DefaultContentNegotiator)现在将以XML和JSON格式化程序结束并调用SelectResponseMediaTypeFormatter

    这里基本上它会选择列表中的第一个格式化程序(我说它有一个caviat,因为它比它复杂一点)所以你要验证你的列表实际上是按照你预期的那样重新排序。 / p>

    最后,我不认为你需要到达那里,因为上面的内容应该让你修复,你总是可以替换IContentNegotiator并覆盖SelectResponseMediaTypeFormatter,如果你有多个格式化器,你选择Json一个。