Skip to main content
 首页 » 编程设计

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

2024年01月31日23lovecherry

类实现

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

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

请您参考如下方法:

您不必指定 [Serializable] 属性,因为无论您指定与否,Asp.Net WebApi 默认都会序列化您的公共(public)属性。你得到 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;