dem*_*emo 2 c# mapping serialization json json.net
我有下一个结构的DTO:
public class DTO
{
public int Id {get;set;}
[JsonProperty("Id")]
public int ServerId {get;set;}
}
Run Code Online (Sandbox Code Playgroud)
从服务器我收到下一个型号的json:
public class ServerModel
{
public int Id {get;set;}
}
Run Code Online (Sandbox Code Playgroud)
我想=> 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;}
}
Run Code Online (Sandbox Code Playgroud)
完成后,在反序列化以下JSON:时{"Id" : 101},DTO.ServerId将得到101while 的值DTO.Id不会被设置.
因为您正在指定一个JSON数据协定,它将两个不同的c#属性映射到一个名为的JSON属性"Id".这是Json.NET不允许的,因为这样的合同无法序列化.