Heim > Backend-Entwicklung > C++ > Wie deserialisiere ich JSON erfolgreich in eine C#-POCO-Klasse mit JsonConvert.DeserializeObject?

Wie deserialisiere ich JSON erfolgreich in eine C#-POCO-Klasse mit JsonConvert.DeserializeObject?

Barbara Streisand
Freigeben: 2025-01-15 11:42:43
Original
475 Leute haben es durchsucht

How to Successfully Deserialize JSON into a C# POCO Class Using 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:

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

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

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

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!

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