使用JSON.NET将JSON数据反序列化为C#
发布时间:2020-12-16 18:47:17 所属栏目:百科 来源:网络整理
导读:我是相对新的工作与C#和JSON数据,并寻求指导。我使用C#3.0,与.NET3.5SP1和JSON.NET 3.5r6。 我有一个定义的C#类,我需要从一个JSON结构填充。但是,并非从Web服务检索的条目的每个JSON结构都包含在C#类中定义的所有可能的属性。 我一直在做的似乎是错误的
|
我是相对新的工作与C#和JSON数据,并寻求指导。我使用C#3.0,与.NET3.5SP1和JSON.NET 3.5r6。
我有一个定义的C#类,我需要从一个JSON结构填充。但是,并非从Web服务检索的条目的每个JSON结构都包含在C#类中定义的所有可能的属性。 我一直在做的似乎是错误的,艰难的方式,只是从JObject中逐个挑选每个值,并将字符串转换为所需的类属性。 JsonSerializer serializer = new JsonSerializer(); var o = (JObject)serializer.Deserialize(myjsondata); MyAccount.EmployeeID = (string)o["employeeid"][0]; 将JSON结构反序列化为C#类并处理JSON源中可能缺失的数据的最佳方法是什么? 我的类被定义为: public class MyAccount
{
[JsonProperty(PropertyName = "username")]
public string UserID { get; set; }
[JsonProperty(PropertyName = "givenname")]
public string GivenName { get; set; }
[JsonProperty(PropertyName = "sn")]
public string Surname { get; set; }
[JsonProperty(PropertyName = "passwordexpired")]
public DateTime PasswordExpire { get; set; }
[JsonProperty(PropertyName = "primaryaffiliation")]
public string PrimaryAffiliation { get; set; }
[JsonProperty(PropertyName = "affiliation")]
public string[] Affiliation { get; set; }
[JsonProperty(PropertyName = "affiliationstatus")]
public string AffiliationStatus { get; set; }
[JsonProperty(PropertyName = "affiliationmodifytimestamp")]
public DateTime AffiliationLastModified { get; set; }
[JsonProperty(PropertyName = "employeeid")]
public string EmployeeID { get; set; }
[JsonProperty(PropertyName = "accountstatus")]
public string AccountStatus { get; set; }
[JsonProperty(PropertyName = "accountstatusexpiration")]
public DateTime AccountStatusExpiration { get; set; }
[JsonProperty(PropertyName = "accountstatusexpmaxdate")]
public DateTime AccountStatusExpirationMaxDate { get; set; }
[JsonProperty(PropertyName = "accountstatusmodifytimestamp")]
public DateTime AccountStatusModified { get; set; }
[JsonProperty(PropertyName = "accountstatusexpnotice")]
public string AccountStatusExpNotice { get; set; }
[JsonProperty(PropertyName = "accountstatusmodifiedby")]
public Dictionary<DateTime,string> AccountStatusModifiedBy { get; set; }
[JsonProperty(PropertyName = "entrycreatedate")]
public DateTime EntryCreatedate { get; set; }
[JsonProperty(PropertyName = "entrydeactivationdate")]
public DateTime EntryDeactivationDate { get; set; }
}
并且要解析的JSON的示例是: {
"givenname": [
"Robert"
],"passwordexpired": "20091031041550Z","accountstatus": [
"active"
],"accountstatusexpiration": [
"20100612000000Z"
],"accountstatusexpmaxdate": [
"20110410000000Z"
],"accountstatusmodifiedby": {
"20100214173242Z": "tdecker","20100304003242Z": "jsmith","20100324103242Z": "jsmith","20100325000005Z": "rjones","20100326210634Z": "jsmith","20100326211130Z": "jsmith"
},"accountstatusmodifytimestamp": [
"20100312001213Z"
],"affiliation": [
"Employee","Contractor","Staff"
],"affiliationmodifytimestamp": [
"20100312001213Z"
],"affiliationstatus": [
"detached"
],"entrycreatedate": [
"20000922072747Z"
],"username": [
"rjohnson"
],"primaryaffiliation": [
"Staff"
],"employeeid": [
"999777666"
],"sn": [
"Johnson"
]
}
使用JsonConvert.DeserializeObject< RootObject>(string json);
在JSON 2 C#上创建您的课程 Json.NET文档:Serializing and Deserializing JSON with Json.NET (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
