asp web api json序列化返回私有属性

时间:2013-06-27 10:50:02

标签: json serialization asp.net-web-api wsdl

我有一个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仍然包含私有变量的名称

任何人都可以帮助我

1 个答案:

答案 0 :(得分:14)

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

config.Formatters.JsonFormatter.SerializerSettings.ContractResolver = new DefaultContractResolver();