班级实施
[Serializable]
public class Apple
{
string name{get;set;}
}
它驻留在服务器端和Web API 2中,并返回一个苹果对象。如果我不使用serializable
属性,我从客户端获得正确的值,但如果我使用Serialized,我的名称为null。我该如何解决这个问题?
答案 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;