使用自定义对象属性反序列化为对象
本文关键字:对象 反序列化 属性 自定义 | 更新日期: 2023-09-27 18:33:31
我有一个这样的类:
public class CareTaker
{
public int Id {get; set;}
public string name {get; set;}
public DateTime? DateTrained {get; set;}
public Certification Certification {get; set;}
public List<Certification> ExpiredCertifications {get; set;}
}
public class Certification
{
public int Id {get; set;}
}
我的 JSON 是这样的:
{
"id": 1,
"name": "Dogtor",
"dateTrained": "01 Feb 2017",
"certification": 2,
"expiredCertifications": [1,5]
}
我知道通常Certification
的 JSON 真的应该像"certification": { "id": 2}
一样,但是,我无权更改 JSON,所以我必须弄清楚如何将我收到的内容("certification": 2
)转换为我的对象......有没有办法让我用JavascriptSerializer或NewtonSoft做到这一点?
你可以做这样的事情:
public class CareTaker
{
...
[NotMapped]
[JsonProperty(PropertyName = "certification"]
public int? CertificationId
{
get
{
return Certification?.Id;
}
set
{
Certification = new Certification { Id = value; }
}
}
[JsonIgnore]
public Certification Certification {get; set;}
...
}
为了正确生成类,我建议复制 JSON 并打开要存储类的文件,然后在 Visual Studio 中转到编辑>粘贴特殊>粘贴 JSON 作为类
然后你会做这样的事情:
JavaScriptSerializer ser = new JavaScriptSerializer();
var jsonToClasses = ser.Deserialize<RootObject>(json);