lima-city: Webhosting, Domains und Cloud
2 Pluspunkte 0 Minuspunkte

Statt jedes Feld (Name, Wert) manuell einzutragen

JObject data = JObject.Parse(output.Trim()); 

dataGridView1.Rows.Clear();

dataGridView1.Rows.Add("Caption", data.SelectToken("Caption"));
dataGridView1.Rows.Add("Manufacturer", data.SelectToken("Manufacturer")); 
dataGridView1.Rows.Add("Model", data.SelectToken("Model")); 
dataGridView1.Rows.Add("PrimaryOwnerName", data.SelectToken("PrimaryOwnerName"));

trage ich jedes Feld in einer Schleife automatisch ein.

foreach (var item in data)
{
    dataGridView1.Rows.Add(item.Key, item.Value);
}

Was ist aber wenn das JSON Element selbst ein Array oder ein Objekt beinhaltet? Kann ich das auch automatisch in einem Datagridview anzeigen?

von  

1 Antwort

0 Pluspunkte 0 Minuspunkte

Du kannst das Objekt abflachen und redundante Einträge mit einem Prefix indexieren. Hier ist eine rekursive Funktion um ein JSON Objekt in eine flache Hierarchie umzuwandeln.

void FlattenJson(JToken token, string prefix)
{
    if (token is JObject obj)
    {
        foreach (var prop in obj.Properties())
        {
            FlattenJson(prop.Value, prefix + prop.Name + ".");
        }
    }
    else if (token is JArray array)
    {
        int index = 0;
        foreach (var item in array)
        {
            FlattenJson(item, $"{prefix}[{index}].");
            index++;
        }
    }
    else
    {
        // Einfaches Key-Value-Paar hinzufügen
        dataGridView1.Rows.Add(prefix.TrimEnd('.'), token.ToString());
    }
}

So kannst du das JSON direkt an die Funktion übergeben, die die Struktur automatisch abflacht..

JObject data = JObject.Parse(output.Trim()); 
dataGridView1.Rows.Clear();
FlattenJson(data, "");

Aus einem Array wie

"InstalledSoftware": [
    { "Name": "Chrome", "Version": "120.1" },
    { "Name": "Notepad++", "Version": "8.5" }
]

würde dadurch

InstalledSoftware[0].Name Chrome
InstalledSoftware[0].Version 120.1
InstalledSoftware[1].Name Notepad++
InstalledSoftware[1].Version 8.5
von (718 Punkte)  
Diese Community basiert auf dem Prinzip der Selbstregulierung. Beiträge werden von Nutzern erstellt, bewertet und verbessert – ganz ohne zentrale Moderation.

Wer hilfreiche Fragen stellt oder gute Antworten gibt, sammelt Punkte. Mit steigender Punktzahl erhalten Mitglieder automatisch mehr Rechte, zum Beispiel

  • Kommentare verfassen
  • Fragen und Antworten bewerten
  • Themen von Fragen bearbeiten
  • Fragen, Antworten und Kommentare bearbeiten
  • Inhalte ausblenden

So entsteht eine Plattform, auf der sich Qualität durchsetzt – getragen von einer engagierten Gemeinschaft.

2.3k Fragen

2.8k Antworten

261 Kommentare

13 Nutzer