想象一个简单的 Controller Action ojit_code。它返回均源自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>
如您所见,派生类的类型在
IEnumerable<BaseType> Get()
属性中传输。但是,如果客户端请求JSON,则会丢失此信息:
[
{"A":"value"},
{"B":"value"},
{"C":"value"}
]
如何解决这个问题?
最佳答案
必须进行以下更改:
在WebApiConfig.cs中,需要添加以下行:
config.Formatters.JsonFormatter.SerializerSettings.TypeNameHandling =
TypeNameHandling.Auto;
需要时,这将自动产生新的属性
$type
。