当前位置:  开发笔记 > 编程语言 > 正文

名为"Id"的成员已存在于"Model"中.使用JsonPropertyAttribute指定其他名称

如何解决《名为"Id"的成员已存在于"Model"中.使用JsonPropertyAttribute指定其他名称》经验,为你挑选了1个好方法。

我有下一个结构的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)上的内容?



1> dbc..:

如果您只是不想读取任何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将得到101while 的值DTO.Id不会被设置.

因为您正在指定一个JSON数据协定,它将两个不同的c#属性映射到一个名为的JSON属性"Id".这是Json.NET不允许的,因为这样的合同无法序列化.

推荐阅读
落单鸟人
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有