少し実験してみると、構成されたフォーマッターの順序が重要であることがわかります(これは非常に直感的です)。
デフォルトでは、のインスタンスを作成するとHttpConfiguration
、そのFormatters
コレクションには次のフォーマッターが含まれます。
- XmlMediaTypeFormatter
- JsonValueMediaTypeFormatter
- JsonMediaTypeFormatter
- FormUrlEncodedMediaTypeFormatter
XMLがデフォルトのフォーマットである理由は、XMLが最初のフォーマッターであるためです。JSONをデフォルト値にするには、コレクションを次のように並べ替えることができます。
- JsonValueMediaTypeFormatter
- JsonMediaTypeFormatter
- XmlMediaTypeFormatter
- FormUrlEncodedMediaTypeFormatter
config
HttpConfigurationのインスタンスが与えられた場合、コレクションを並べ替える1つの方法は次のとおりです。
var jsonIndex = Math.Max(
config.Formatters.IndexOf(config.Formatters.JsonFormatter),
config.Formatters.IndexOf(config.Formatters.JsonValueFormatter));
var xmlIndex = config.Formatters.IndexOf(
config.Formatters.XmlFormatter);
config.Formatters.Insert(jsonIndex + 1, config.Formatters.XmlFormatter);
config.Formatters.RemoveAt(xmlIndex);
これがサポートされているかどうかはわかりませんが、WebApi0.6.0で動作するようです。