Heim > Backend-Entwicklung > C++ > Wie kann ich mit fehlenden Daten elegant umgehen, wenn ich JSON mithilfe von JSON.NET nach C# deserialisiere?

Wie kann ich mit fehlenden Daten elegant umgehen, wenn ich JSON mithilfe von JSON.NET nach C# deserialisiere?

Susan Sarandon
Freigeben: 2025-01-26 16:36:11
Original
959 Leute haben es durchsucht

How can I gracefully handle missing data when deserializing JSON to C# using JSON.NET?

Verwenden Sie json.net, um die JSON -Daten auf C#zu sequenzieren: Verarbeitung fehlender Daten elegant

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren
-Klassel zurücklegen:

JsonConvert.DeserializeObject MyAccount verwendet dies automatisch den Wert von

in JSON -Daten.
<code class="language-csharp">var myAccount = JsonConvert.DeserializeObject<MyAccount>(jsonString);</code>
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage