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
Barbara StreisandOriginal
2025-01-15 11:42:43472Durchsuche

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>

    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>
  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>

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!

Stellungnahme:
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