Bei der Verarbeitung von JSON -Daten in C#ist es wichtig, die Situation zu verarbeiten, in der der JSON -Struktur bestimmte Attribute fehlen, die in der C#-Klasse definiert sind. Traditionell ist die Methode, jeden Wert manuell aus dem JSON -Objekt zu extrahieren, mühsam und leicht zu machen.
Glücklicherweise bietet JSON.net eine elegante Lösung. Durch das Erstellen einer C#-Klasse, die die von Ihnen analysierende JSON -Struktur widerspiegelt, können Sie die
-Methode verwenden. Diese Methode kartiert das JSON -Attribut automatisch auf die entsprechenden Attribute in der Klasse.
JsonConvert.DeserializeObject
Betrachten Sie beispielsweise die folgenden JSON -Daten:
und die entsprechende C#Klasse:
<code class="language-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" ] }</code>
Mit der Methode können Sie JSON -Daten in die Instanz der
<code class="language-csharp">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 = "accountstatusmodifiedby")] public Dictionary<string, string> AccountStatusModifiedBy { get; set; } [JsonProperty(PropertyName = "accountstatusmodifytimestamp")] public DateTime AccountStatusModified { get; set; } [JsonProperty(PropertyName = "accountstatusexpnotice")] public string AccountStatusExpNotice { get; set; } [JsonProperty(PropertyName = "entrycreatedate")] public DateTime EntryCreatedate { get; set; } [JsonProperty(PropertyName = "entrydeactivationdate")] public DateTime EntryDeactivationDate { get; set; } }</code>
JsonConvert.DeserializeObject
MyAccount
verwendet dies automatisch den Wert von
<code class="language-csharp">var myAccount = JsonConvert.DeserializeObject<MyAccount>(jsonString);</code>
Auch wenn der JSON -Struktur bestimmte Attribute fehlen, wie z. Diese Methode beseitigt die Bedürfnisse komplexer Bedingungen oder der manuellen Wertzustimmung und vereinfacht den Datenkonvertierungsprozess. myAccount
Das obige ist der detaillierte Inhalt vonWie kann ich mit fehlenden Daten elegant umgehen, wenn ich JSON mithilfe von JSON.NET nach C# deserialisiere?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!