序列化数据传输对象后,从Web API 2到客户端的值为空

时间:2016-03-08 05:46:48

标签: c# mongodb web asp.net-web-api asp.net-web-api2

班级实施

            [Serializable]
            public class Apple
            {

                string name{get;set;}


            }

它驻留在服务器端和Web API 2中,并返回一个苹果对象。如果我不使用serializable属性,我从客户端获得正确的值,但如果我使用Serialized,我的名称为null。我该如何解决这个问题?

1 个答案:

答案 0 :(得分:5)

您不必指定[Serializable]属性,因为无论您是否指定,Asp.Net WebApi都会默认序列化您的公共属性。你之所以得到null对象是因为你的重新调整的json不是正常的形式。

第一个解决方案: 如果你真的想使用[Serializable]属性,那么你需要配置Serializer formatter (json or xml) in WebApi 2,你需要使用[DataContract]和[DataMember]以及[Serializable]。

[Serializable]
[DataContract]
public class Apple
{
   [DataMember]
   string name{get;set;}
}

第二个解决方案: 您可以将Serializer配置为忽略[Serializable]属性。通过这样做,你不必像我上面指定的那样在课堂上添加额外的属性。

var serializerSettings = GlobalConfiguration.Configuration.Formatters.JsonFormatter.SerializerSettings;
var contractResolver = (DefaultContractResolver)serializerSettings.ContractResolver;
contractResolver.IgnoreSerializableAttribute = true;