我正在尝试反序列化一个JSON有效负载,由于我的控件之外的原因包含一个与其类名完全相同的属性(即成员)。类似的东西:
{
...,
"Id": {
"A" : "Hello",
"B" : "World",
...
"Id" : 1
},
...
}
当我从这个有效载荷派生一个类时,我需要这样的东西:
class Id{
public string A, B;
public int Id;
}
显然,编译器抱怨:成员名称不能与封闭类型相同
如何重命名成员(或该效果的类),因此Json.NET(我用来制作它的库更容易)只需调用JsonConvert.DeserializeObject<T>
即可“补充”有效负载?
答案 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; }
}