Json in Liste umwandeln C#?


06.11.2023, 18:43

Hier sieht man noch meine ToString Methode für die Book Klasse

2 Antworten

Um **JSON-Daten** in eine **Liste von Objekten** in C# umzuwandeln, gibt es verschiedene Ansätze. Hier sind einige Möglichkeiten:

1. **Newtonsoft.Json (Json.NET)**:

- Die beliebte Bibliothek **Json.NET** (auch bekannt als Newtonsoft.Json) bietet eine einfache Möglichkeit, JSON-Daten zu deserialisieren.

- Zuerst müssen Sie Ihre Klassen entsprechend der Struktur Ihrer JSON-Daten definieren. Stellen Sie sicher, dass die Klasseneigenschaften den JSON-Eigenschaftsnamen entsprechen.

- Beispiel:

```csharp

using Newtonsoft.Json;

using System.Collections.Generic;

class Wrapper

{

[JsonProperty("JsonValues")]

public ValueSet ValueSet { get; set; }

}

class ValueSet

{

[JsonProperty("id")]

public string Id { get; set; }

[JsonProperty("values")]

public Dictionary<string, Value> Values { get; set; }

}

class Value

{

[JsonProperty("id")]

public string Id { get; set; }

[JsonProperty("diaplayName")]

public string DisplayName { get; set; }

}

// Deserialisierung

var jsonString = @"{ ... }"; // Ihr JSON-String hier

var valueSet = JsonConvert.DeserializeObject<Wrapper>(jsonString).ValueSet;

```

2. **System.Text.Json** (eingebaut in .NET Core und .NET 5+):

- .NET Core und .NET 5+ bieten eine eingebaute JSON-Serialisierungs- und Deserialisierungsbibliothek namens **System.Text.Json**.

- Ähnlich wie bei Json.NET müssen Sie Ihre Klassen entsprechend der JSON-Struktur definieren und die `JsonSerializer`-Klasse verwenden.

- Beispiel:

```csharp

using System.Text.Json;

// Ihre Klassen hier definieren (wie oben)

// Deserialisierung

var jsonString = @"{ ... }"; // Ihr JSON-String hier

var valueSet = JsonSerializer.Deserialize<Wrapper>(jsonString).ValueSet;

```

Wählen Sie die Methode, die am besten zu Ihrem Projekt passt, und passen Sie die Klassendefinitionen entsprechend Ihrer JSON-Struktur an. Vergessen Sie nicht, den JSON-String durch Ihre tatsächlichen Daten zu ersetzen. 🚀

Quelle: Unterhaltung mit Bing, 12.2.2024

(1) How to convert Json array to list of objects in c# - Stack Overflow. https://stackoverflow.com/questions/19581820/how-to-convert-json-array-to-list-of-objects-in-c-sharp.

(2) how to convert json to list c# - Stack Overflow. https://stackoverflow.com/questions/52313229/how-to-convert-json-to-list-c-sharp.

(3) C# JSON file into list - Stack Overflow. https://stackoverflow.com/questions/16416138/c-sharp-json-file-into-list.

(4) Convert Json String to C# Object List - Stack Overflow. https://stackoverflow.com/questions/22191167/convert-json-string-to-c-sharp-object-list.

(5) Serialisieren und Deserialisieren von JSON mit C# – .NET - .NET. https://learn.microsoft.com/de-de/dotnet/standard/serialization/system-text-json/overview.

(6) github.com. https://github.com/shendongnian/download4/tree/e45352911534dfb757cba4d0074eec312760536f/code5%2F799078-19593892-50097554-2.cs.

(7) github.com. https://github.com/farrukhkhan89/ProgrammingChallenges/tree/caf79b146e91da3cf4125c4634d11fc0c49457d8/LongestPalindomeTask%2FProgram.cs.

Deine Model-Klasse wird wohl falsch sein.

Dies wäre eine korrekte Version:

public class Book
{
  [JsonPropertyName("isbn")]
  public string Isbn { get; set; }

  [JsonPropertyName("title")]
  public string Title { get; set; }

  [JsonPropertyName("price")]
  public decimal Price { get; set; }

  public override string ToString() => $"{Isbn} - {Title} - {Price}";
}
spaghetto711731 
Fragesteller
 06.11.2023, 19:00

Sind diese Anmerkungen über den Properties Pflicht damit es funktioniert?

0
regex9  06.11.2023, 19:01
@spaghetto711731

In dem Fall ja, denn der Propertyname in der Model-Klasse muss mit dem Propertynamen des JSON-Objekts übereinstimmen.

1