Dan*_*rth 7 .net asp.net rest web-services asp.net-web-api
想象一下简单的控制器动作IEnumerable<BaseType> Get().它返回所有派生自BaseType的不同类型的枚举.
当客户端请求XML时,结果如下:
<ArrayOfBaseType>
<BaseType i:type="DerivedType1"><A>value</A></BaseType>
<BaseType i:type="DerivedType2"><B>value</B></BaseType>
<BaseType i:type="DerivedType3"><C>value</C></BaseType>
</ArrayOfBaseType>
Run Code Online (Sandbox Code Playgroud)
如您所见,派生类的类型在i:type属性中传输.
但是,如果客户端请求JSON,则缺少此信息:
[
{"A":"value"},
{"B":"value"},
{"C":"value"}
]
Run Code Online (Sandbox Code Playgroud)
如何解决这个问题?
需要进行以下更改:
在 WebApiConfig.cs 中,需要添加以下行:
config.Formatters.JsonFormatter.SerializerSettings.TypeNameHandling =
TypeNameHandling.Auto;
Run Code Online (Sandbox Code Playgroud)
这将在需要时自动生成新属性$type。
| 归档时间: |
|
| 查看次数: |
1208 次 |
| 最近记录: |