AGB  ·  Datenschutz  ·  Impressum  







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

XML-Schema auswerten (Link)

Offene Frage von "NoGAD"
Ein Thema von NoGAD · begonnen am 21. Feb 2020 · letzter Beitrag vom 23. Feb 2020
Antwort Antwort
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#1

AW: XML-Schema auswerten (Link)

  Alt 21. Feb 2020, 08:23
Das Format scheint hier beschrieben zu sein.
https://schema.org/Book

Google bietet ja offenbar eine Api dazu.

Gute Datenbanksysteme erlauben die Abfrage von JSON wie diesem oben unabhängig von individuellen Ausprägungen per SQL.
Dabei kannst Du innerhalb SQL auch gleich Existenz-Prüfungen für Objekte nutzen und so wirklich fehlerfrei Daten abfragen, die vorhanden sind und Dich interessieren.

P.S.: Objekte und Arrays kannst Du damit nahezu beliebig zerlegen und transformieren.
Gruß, Jo
  Mit Zitat antworten Zitat
Benutzerbild von NoGAD
NoGAD

Registriert seit: 31. Jan 2006
Ort: Weimar
343 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: XML-Schema auswerten (Link)

  Alt 21. Feb 2020, 08:29
Das Array habe ich gefunden.

Code:
  var
    JSonValue : TJSonValue;
    Authors : TJSONArray;
    Items : string;
    i : Integer;
  begin

    Memo2.Clear;
    JSonValue := TJSonObject.ParseJSONValue( Memo1.Text );
    Items := JSonValue.GetValue< string >( 'items[0].volumeInfo.title' );
    Memo2.Lines.Add( Items );
    Authors := JSonValue.GetValue< TJSONArray >( 'items[0].volumeInfo.authors' );
    for i := 0 to Authors.Size - 1 do
      Memo2.Lines.Add( Authors.Get( i ).Value );
    Items := JSonValue.GetValue< string >( 'items[0].volumeInfo.publishedDate' );
    Memo2.Lines.Add( Items );

    JSonValue.Free;
Damit klappt es.

@jobo: ich gucke es mir an
Mathias
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#3

AW: XML-Schema auswerten (Link)

  Alt 22. Feb 2020, 10:30
@jobo: ich gucke es mir an
Ich hab Dir ein Beispiel gebaut, das zeigt, was geht bzw. was ich meine. Ist natürlich nicht vollständig und vielleicht nicht anwendbar für Dich, aber einfach sehr bequem (und erprobt).
https://rextester.com/discussion/YNM...json-operators
Gruß, Jo
  Mit Zitat antworten Zitat
Benutzerbild von NoGAD
NoGAD

Registriert seit: 31. Jan 2006
Ort: Weimar
343 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: XML-Schema auswerten (Link)

  Alt 22. Feb 2020, 16:57
Hallo Jobo,

das was Du mir da als Link geschickt hast, ist mir zu hoch. Mit Postgres habe ich noch nie zu tun gehabt, ich filtere es momentan anders, ein Beispiel stelle ich später hier rein, wenn es fehlerfrei läuft.

LG Mathias
Mathias
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#5

AW: XML-Schema auswerten (Link)

  Alt 23. Feb 2020, 07:17
das was Du mir da als Link geschickt hast, ist mir zu hoch.
Das kann ich nicht recht glauben. Du hast wahrscheinlich zu kurz drauf geschaut
Es ist eine sehr bequeme Art-wenn nicht sogar faule-, JSON zu lesen.

Ohne es verstehen zu müssen: Ein einziges SQL Select Statement liefert Dir alle Felder, die Du aus dem JSON brauchst/haben möchtest, ohne Substring-Krieg und Frickelei.
Ich kenne Deinen Bedarf an Feldern aus dem books Schema nicht, aber ich behaupte, dass man mit einem Select alles auslesen kann, was benötigt wird.
Mein Beispiel enthält natürlich nur 5 Felder und die sind nicht mal alle aus dem books schema.

Ganz generell mal die Anmerkung, dass natürlich mit der Existenz eines Hammers nicht jedes Problem zu einem Nagel gemacht werden kann. Mein Vorschlag SQL zu nutzen macht nur unter bestimmten Bedingungen Sinn. Wenn sowieso SQL genutzt wird, wenn tatsächlich viele oder sehr viel Daten bewegt werden.

Am Ende ist es wahrscheinlich egal, welchen Weg man geht, um JSON zu lesen oder zu schreiben. Die Botschaft ist hauptsächlich, dass man eine geeignete, erprobte Libary/Unit dafür nimmt, statt mit substr usw. zu Fuß rumzueiern. Mein Vorschlag ist hier halt PostgreSQL.

Wenn Dir SQL nicht fremd ist, dann ist Postgres natürlich nicht automatisch an Bord bzw. im Projekt und sicher "Kanonen auf Spatzen". Ich habe es nur genommen, weil es das kann und ich es häufig nutze. Als kleiner, feiner Ersatz könnte auch SQLite dienen. Dessen JSON Funktionen sind aber irgendwie anders gestrickt.
Gruß, Jo
  Mit Zitat antworten Zitat
Benutzerbild von NoGAD
NoGAD

Registriert seit: 31. Jan 2006
Ort: Weimar
343 Beiträge
 
Delphi 10.4 Sydney
 
#6

AW: XML-Schema auswerten (Link)

  Alt 23. Feb 2020, 15:32
Hallo nochmal,

bisher klappt alles ganz gut, indem ich den json String parse.

Leider habe ich noch ein Problem mit der ersten Variable in der Struktur: items.

Das ist ein Array, von welchem ich die Anzahl der Elemente nicht auslesen kann.

Also so etwas wie

Code:
  var
    JSonObject : TJSONObject;
    JSonValue : TJSonValue;
    Items : TJSonArray;

    TotalItems : Integer;

    Dummy_String : String;
  begin
    Dummy_String := IdHTTP1.Get( Dummy_String );

    JSonObject := TJSONObject.ParseJSONValue( Dummy_String ) as TJSONObject;
    JSonValue := TJSONObject.ParseJSONValue( Dummy_String );

    TotalItems := JSonValue.GetValue< Integer >( 'totalItems' );

    if TotalItems = 0 then
    begin
      ShowMessage( Message_ISBN_NoItems );
      Exit;
    end;

    Items := JSonObject.GetValue< TJSonArray >( 'Items' );
Wie bekomme ich die anzahl der Elemente von Items?

In folgendem Beispiel sind es 10: https://www.googleapis.com/books/v1/...=9783499244551

LG Mathias





Edit:

Habe es gefunden, war eine Blockade

Code:
    if JSonObject.TryGetValue( 'items', Items ) then
      Items := JSonValue.GetValue< TJSONArray >( 'items' );

    { : Mehrere Items wurden gefunden, in eine Auswahlliste : }
    if Items.Count > 1 then
Mathias

Geändert von NoGAD (23. Feb 2020 um 16:01 Uhr) Grund: Selbst gefunden
  Mit Zitat antworten Zitat
philipp.hofmann

Registriert seit: 21. Mär 2012
Ort: Hannover
864 Beiträge
 
Delphi 10.4 Sydney
 
#7

AW: XML-Schema auswerten (Link) - JSON

  Alt 23. Feb 2020, 16:07
Kleiner Hinweis: Kannst du vielleicht den Titel mal anpassen, falls jemand anders später danach sucht. Hier wird ja kein XML-Schema ausgewertet, sondern ein JSON eingelesen. Danke.
  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 12:49 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