AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

JSON Elementname mit JSON auslesen

Ein Thema von amigage · begonnen am 14. Nov 2019 · letzter Beitrag vom 18. Nov 2019
Antwort Antwort
amigage

Registriert seit: 11. Nov 2005
Ort: Leipzig
270 Beiträge
 
Delphi 11 Alexandria
 
#1

JSON Elementname mit JSON auslesen

  Alt 14. Nov 2019, 16:32
Hallo,

ich versuche mit Superobject eine JSON Struktur (hier vereinfacht dargestellt) auszulesen.

Code:
{
  "profile":{
     "names":{
        "Default":{"showname":"der angezeigte Profilname"},
        "Nummer1":{"showname":"der angezeigte Profilname"}
        }
  }
}
Und zwar benötige ich Zugriff auf die Profile "Default" und "Nummer1" sowie deren jeweiligen Werte "showname".

Delphi-Quellcode:
var
  vJSON: ISuperObject;
  vArray : TSuperArray;
  vItem: ISuperObject;
  I: Integer;
begin
  vJSON := TSuperObject.ParseFile(filename, true);

  vArray := vJSON.A['profile.names'];
  for i := 0 to vArray.Length-1 do
  begin
    vItem := vArray.O[i];
    showmessage(vItem. ??? ); // <---------------
  end;
Wie bekomme ich den Namen des Profiles unterhalb von "names"?
Ich brauche ja den mir erst einmal unbekannten Namen des Profils, um dann den anzuzeigenden Profilnamen ermitteln zu können.
Ich stehe leider etwas auf dem Schlauch...

Vielen Dank für einen Tipp!
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.008 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#2

AW: JSON Elementname mit JSON auslesen

  Alt 15. Nov 2019, 12:02
Was unter 'profile.names' steht, ist kein Array, sondern ein Objekt mit 2 Eigenschaften, die jeweils wieder ein Objekt beinhalten.
Soweit ich gesehen habe, bietet SuperObject keinen einfachen Weg, um Name-Wert Paare eines Objekts zu iterieren.

Aber so geht es mit JsonDataObjects:

Delphi-Quellcode:
var
  vJSON: TJsonObject;
  vObj: TJsonObject;
  vItem: TJsonNameValuePair;
begin
  vJSON := TJsonBaseObject.ParseFromFile(filename, true) as TJsonObject;
  vObj := vJSON.O['profile'].O['names'];
  for vItem in vObj do
    Writeln(vItem.Name, ':', vItem.Value.S['showname']);
end.
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
amigage

Registriert seit: 11. Nov 2005
Ort: Leipzig
270 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: JSON Elementname mit JSON auslesen

  Alt 18. Nov 2019, 13:36
Hallo und vielen Dank für den Hinweis auf diese Lösung.
Ich werde es ausprobieren.

Edit: JsonDataObjects ausprobiert und funktioniert wie gewünscht. Danke

Geändert von amigage (18. Nov 2019 um 14:23 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:10 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz