我有下一个结构的DTO:
public class DTO { public int Id {get;set;} [JsonProperty("Id")] public int ServerId {get;set;} }
从服务器我收到下一个型号的json:
public class ServerModel { public int Id {get;set;} }
我想=>
Id
从服务器映射到ServerId
属性将服务器映射中的json反序列化为DTO .但目前我得到错误:
名为"Id"的成员已存在
DTO
.使用JsonPropertyAttribute指定其他名称.
我能解决这个问题吗?或者我只是可以更改我的ServerModel以匹配我在客户端(DTO
)上的内容?
如果您只是不想读取任何JSON值DTO.Id
,您应该应用[JsonIgnore]
它:
public class DTO { [JsonIgnore] public int Id {get;set;} [JsonProperty("Id")] public int ServerId {get;set;} }
完成后,在反序列化以下JSON:时{"Id" : 101}
,DTO.ServerId
将得到101
while 的值DTO.Id
不会被设置.
因为您正在指定一个JSON数据协定,它将两个不同的c#属性映射到一个名为的JSON属性"Id"
.这是Json.NET不允许的,因为这样的合同无法序列化.