【发布时间】:2014-05-16 16:23:00
【问题描述】:
我有一个带有属性的类,我想在 json 反序列化中使用,但我想在 json 序列化中省略。
示例: 我有一个班级用户:
public class UserDTO
{
public string UserName { get; set; }
public string Password { get; set; }
}
我在 ASP.NET Web API 中使用它。
我使用这个类来登录和获取所有用户。 显然,在获取时我只想看到用户名,但在登录时我需要用户名和密码。
我已经尝试使用属性[IgnoreDataMember]:
public class UserDTO
{
public string UserName { get; set; }
[IgnoreDataMember]
public string Password { get; set; }
}
或者用 DataContract 装饰我的班级
[DataContract]
public class UserDTO
{
[DataMember]
public string UserName { get; set; }
public string Password { get; set; }
}
但在这种模式下我无法登录,确实如果我不使用属性 [DataContract] 或 [IgnoreDataMember] 我可以使用登录,但在获取我看到密码了。
我也尝试使用支持字段 [NotSerialized],例如建议 here,但我得到了相同的结果。
【问题讨论】:
-
哪个序列化程序?这很重要。
-
你如何反序列化你从未序列化的属性?根据定义,您不能对不存在的属性进行操作!另外,如果这种行为是出于安全考虑,那么为什么要使用字符串?我不明白的主要事情是实际上是什么问题?如果您不在传输时序列化密码,那么根据定义,接收器将不会获得密码。因此,您的代码在技术上按预期工作。那么问题不是保留密码还是保留密码?在我看来,您需要创建一个 credentialDTO 来保存用户和密码以保持两个实体分开。
标签: asp.net .net json serialization asp.net-web-api