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

co2*_*f2e 1 c# mongodb web asp.net-web-api asp.net-web-api2

类实现

            [Serializable]
            public class Apple
            {

                string name{get;set;}


            }
Run Code Online (Sandbox Code Playgroud)

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

Zai*_*ain 5

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

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

[Serializable]
[DataContract]
public class Apple
{
   [DataMember]
   string name{get;set;}
}
Run Code Online (Sandbox Code Playgroud)

第二种解决方案: 您可以将Serializer配置为忽略[Serializable]属性.通过执行此操作,您不必像上面指定的那样使用类添加额外的属性.

var serializerSettings = GlobalConfiguration.Configuration.Formatters.JsonFormatter.SerializerSettings;
var contractResolver = (DefaultContractResolver)serializerSettings.ContractResolver;
contractResolver.IgnoreSerializableAttribute = true;
Run Code Online (Sandbox Code Playgroud)