在JSON反序列化期间,成员名称与类相同

时间:2016-12-14 19:43:18

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

我正在尝试反序列化一个JSON有效负载,由于我的控件之外的原因包含一个与其类名完全相同的属性(即成员)。类似的东西:

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

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

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

显然,编译器抱怨:成员名称不能与封闭类型相同

如何重命名成员(或该效果的类),因此Json.NET(我用来制作它的库更容易)只需调用JsonConvert.DeserializeObject<T>即可“补充”有效负载?

2 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:0)

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

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