将Enum属性更改为nullable强制WebAPI 2返回JSON而不是XML

时间:2018-01-11 19:02:16

标签: asp.net-web-api2

我正在使用WebAPI2开发API。其作用之一是生成状态所需的报告,该报告需要采用XML格式。

我正在使用一组XSD和自动生成的类。我有一个Enum属性......

[System.Xml.Serialization.XmlTextAttribute()]
public CrewMemberRoles Value

当我使这个枚举可以为空时......

[System.Xml.Serialization.XmlTextAttribute()]
public CrewMemberRoles? Value

它强制WebAPI2返回JSON而不是XML;即使我有......

Content-Type: application/xml
Accept: application/xml

...在我的HTTP标题中。

我试过......

Configuration.Formatters.Remove(Configuration.Formatters.JsonFormatter);

...在控制器返回之前,但WebAPI然后返回一个完全空的响应。

在我将enum更改为nullable之前,WebAPI将枚举作为序列中的第一个枚举返回,或者返回上一次调用中此特定字段的前一个值。

任何建议都表示赞赏。

1 个答案:

答案 0 :(得分:0)

首先,只要序列化出现问题,序列化就会默认返回默认的序列化程序。由于我不明白的原因,进一步解释here,序列化可空的问题。

我通过创建一个名为XXXSpecified ...

的bool解决了我的问题
isouter=True

每当我的Value属性中有空值时,将此值设置为false。

This Stack Overflow question帮助我得出了这个结论。