【问题标题】:Member name is the same as class during JSON deserialization [duplicate]JSON反序列化期间成员名称与类相同[重复]
【发布时间】:2017-04-30 06:31:56
【问题描述】:

我正在尝试反序列化一个 JSON 有效负载,由于我无法控制的原因,该有效负载包含一个与其类名完全相同的属性(即成员)。比如:

{ 
  ...,
   "Id": {
      "A" : "Hello",
      "B" : "World",
      ...
      "Id" : 1
   },
   ...
}

当我从这个有效负载派生一个类时,我需要这样的东西:

class Id{
   public string A, B;
   public int Id;
}

很明显,编译器会报错:成员名称不能与封闭类型相同

我如何重命名成员(或该效果的类),以便 Json.NET(我用来简化它的库)能够通过调用 JsonConvert.DeserializeObject<T> 来“水合”有效负载?

【问题讨论】:

    标签: c# json json.net deserialization json-deserialization


    【解决方案1】:

    为属性使用不同的名称,并提示 json.net 如何反序列化该属性...

    public class Id
    {
        public string A {get; set;}
        public string B {get; set;}
        [JsonProperty("Id")]
        public int IdProp;
    }
    

    【讨论】:

      【解决方案2】:

      使用JsonProperty 属性,该属性允许您在映射到不同名称的目标属性时指定源属性的名称。

      public class Id
      {
          public string A { get; set; }
          public string B { get; set; }
          [JsonProperty("Id")]
          public int ExtId { get; set; }
      }
      

      【讨论】:

      • 投反对票者,非常感谢您的反馈。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-03-05
      • 1970-01-01
      • 1970-01-01
      • 2023-03-14
      • 2022-08-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多