12

我有一个 Web api 控制器类,我在从 Web api 控制器的 WSDL 生成的代理类上调用一个方法,然后返回一个在 WSDL 代理类中定义的类型的对象。

但返回的 xml/json 包含代理类的私有成员

私人成员是

    private string companyField;

    private string soldBPField;

    private string fromDateField;

    private string toDateField;

    private long succStatusField;

并且返回的 xml 是:

<companyField>700</companyField>
<soldBPField>999000353</soldBPField>
<fromDateField>01-01-2012</fromDateField>
<toDateField>01-01-2013</toDateField>

返回的json也类似

我更改了 global.asax 中的 xml 格式化程序,如下所示:

var xml = GlobalConfiguration.Configuration.Formatters.XmlFormatter;
xml.UseXmlSerializer = true;

这将返回的 XML 更改为:

<company>700</company>
<soldBP>999000353</soldBP>
<fromDateField>01-01-2012</fromDate>
<toDate>01-01-2013</toDate>

但返回的 json 仍然包含私有变量的名称

谁能帮我这个

4

1 回答 1

18

您的类型是否标记为[Serializable]?可序列化意味着序列化程序应该序列化所有字段 - 私有或公共。尝试删除Serializable或使用此行来阻止 JSON 格式化程序识别属性:

config.Formatters.JsonFormatter.SerializerSettings.ContractResolver = new DefaultContractResolver();
于 2013-06-27T18:24:29.953 回答