Heim >Backend-Entwicklung >C++ >Wie deserialisiere ich JSON erfolgreich in eine C#-POCO-Klasse mit JsonConvert.DeserializeObject?
Verwenden Sie JsonConvert.DeserializeObject, um JSON in die C#-POCO-Klasse zu analysieren
Wenn bei der Deserialisierung von JSON in eine C#-POCO-Klasse Fehler auftreten (z. B. die Ausnahme „Deserialisierung nicht möglich...“), ist es wichtig, die Anforderungen für eine erfolgreiche Deserialisierung zu verstehen.
Konkret erfordert die JsonConvert.DeserializeObject
-Methode, dass der JSON der erwarteten Struktur und dem erwarteten Datentyp entspricht, die in der POCO-Klasse definiert sind.
Fehler beheben
Der Schlüssel zur Lösung dieses Fehlers liegt in zwei Aspekten:
Listeneigenschaften korrekt deklarieren:
Stellen Sie sicher, dass die JSON-Antwort ein Array von Objekten für die Eigenschaften enthält, die in der POCO-Klasse als List<T>
deklariert sind. Zum Beispiel:
<code class="language-json"> { "username": "username", // ... 其他属性 "accounts": [ { "github": "github-username" }, // ... 其他帐户 ] }</code>
In einer POCO-Klasse sollte das Accounts
-Attribut wie folgt deklariert werden:
<code class="language-csharp"> [JsonProperty("accounts")] public List<Account> Accounts { get; set; }</code>
JsonProperty-Attribut verwenden:
JsonProperty
Attribute ordnen JSON-Attributnamen den entsprechenden POCO-Klassenattributen zu. Standardmäßig wird bei JSON-Eigenschaftsnamen die Groß-/Kleinschreibung beachtet und sie stimmen mit C#-Eigenschaftsnamen überein. Um diese Zuordnung anzupassen, verwenden Sie das JsonProperty
-Attribut:
<code class="language-csharp"> [JsonProperty("github")] public string GithubUsername { get; set; }</code>
Beispiel
Hier ist ein korrigiertes Beispiel:
<code class="language-csharp">public class User { [JsonProperty("username")] public string Username { get; set; } // ... 其他属性 [JsonProperty("accounts")] public List<Account> Accounts { get; set; } } public class Account { [JsonProperty("github")] public string GithubUsername { get; set; } } // 反序列化代码 var json = @"{ 'username': 'jdoe', // ... 其他属性 'accounts': [{ 'github': 'jdoe-github' }] }"; var user = JsonConvert.DeserializeObject<User>(json);</code>
Das obige ist der detaillierte Inhalt vonWie deserialisiere ich JSON erfolgreich in eine C#-POCO-Klasse mit JsonConvert.DeserializeObject?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!