![]() |
AW: Anzahl Einträge in JsonArray
Zitat:
TJSONArray.GetValue -> TList<T>.GetItem -> CheckItemRange -> ErrorArgumentOutOfRange -> raise EArgumentOutOfRangeException Ohhh, steht so sogar in der Doku drin. Zitat:
Wie gesagt, siehe #3 und #8 .... ich tippe auf das zu kurze IF, bzw. das dahinter :angle: Zitat:
Du wirst es nicht glauben, aber Strg+C funktioniert bei fast allen Dialog-Fenstern, sowie im Logfenster des Delphi, und dann hier in einem [QUOTE] ein Strg+V. |
AW: Anzahl Einträge in JsonArray
Danke für die ganzen Tips!
Bevor ich mich den Fehler in der Schleife widme, würde ich gerne die vorgelagerte Problematik der Anzahl Einträge lösen. Array.Count gibt immer die 49 zuück, egal wieviele Einträge tatsächlich existieren. |
AW: Anzahl Einträge in JsonArray
Zitat:
Erste Gelegenheit für Exception bei $0086929C. Exception-Klasse $C0000005 mit Meldung 'access violation at 0x0086929c: read of address 0x81f98114'. Prozess Project1.exe (41052) |
AW: Anzahl Einträge in JsonArray
Zitat:
![]() Bis bald... Thomas |
AW: Anzahl Einträge in JsonArray
Liste der Anhänge anzeigen (Anzahl: 1)
Vielen Dank an alle! Das ganze läuft mittlerweile, allerdings hat sich ein (für mich) viel größeres Problem aufgetan, wo mir so jeglicher Ansatzpunkt fehlt.
So sieht das ganze bis dato aus und läuft auch.
Code:
Jetzt habe ich aber festegestellt, dass ich auch noch ein paar Info's brauche, welche tiefer verschachtelt sind und sich (vermutlich) per Name nicht ansprechen lassen.
var
JSonObject: TJSonObject; JSonValue: TJSonValue; JSonArray: TJsonArray; id, name, description, sku: string; i,j: integer; begin JsonValue := TJSONObject.ParseJSONValue(Memo1.Text); if Assigned(JsonValue) then try JSonArray := JsonValue as TJSONArray; j := 1; for i := 0 to JSonArray.Count-1 do begin JSonObject := JSonArray.Items[i] as TJSonObject; id := JSonObject.GetValue('id').Value; sku := JSonObject.GetValue('sku').Value; description := JSonObject.GetValue('description').Value; name := JSonObject.GetValue('name').Value; //Überschriften StringGrid1.Cells[0,0] := 'ID'; StringGrid1.Cells[1,0] := 'Artikelnummer'; StringGrid1.Cells[2,0] := 'Name'; StringGrid1.Cells[3,0] := 'Preis'; StringGrid1.Cells[4,0] := 'Beschreibung'; // Daten StringGrid1.Cells[0,j] := id; StringGrid1.Cells[1,j] := sku; StringGrid1.Cells[2,j] := name; StringGrid1.Cells[3,j] := price1; StringGrid1.Cells[4,j] := description; Inc(j); end; finally JsonValue.Free; end; end; Und genau endet mein eh bescheidenes KnowHow im Moment. Ich habe die Struktur mal angehangen. Der Knoten 'bm_psi_bulk_prices' ist auf jeden Fall immer vorhanden, aber nicht zwangsläufig gefüllt, und kann auch mehr oder weniger Einträge haben. Danke für einen kleinen Ansatz, wie ich mich da rantasten kann. |
AW: Anzahl Einträge in JsonArray
Zitat:
Delphi-Quellcode:
oder
GetValue('bm_psi_bulk_prices') AS TJSONObject
Delphi-Quellcode:
versuchen, je nachdem was dort drin steht (Ohne JSON Struktur mehr Glaskugel als wirklich Hilfe). Ist der Punkt gefüllt hast du dein Arrray/Object in der übergabe oder eben NIL. Das heißt vorher auf nil prüfen wenn nil dann nix machen, wenn nicht nil, dann weiter mit dem was auch immer du machen willst.
GetValue('bm_psi_bulk_prices') AS TJSONArray
Ich weiß der Einsprung in JSON kann einem einen guten Knoten in den Kopf machen, aber so Schwer ist das eigentlich nicht: JSON hat eigentlich nur 3 Unterschiedliche Arten, der Datenübertragung. 1.) JSONArray - gekennzeichnet durch [] 2.) JSONObject - gekennzeichnet durch {} 3.) JSONValue - Key/value pair im Aufbau "MeinString":"mein String" oder "MeinInteger":123 alles wird immer von nächsten Wert mit einem Komma abgegrenzt. Zu allen Teilen gibt es in Delphi Entsprechungen (Mehrfach) die das einlesen können und mit dem du die Struktur durchgehen kannst. Alle Möglichkeiten findest du hier: ![]() vG Patrick PS: Hab gerade das BIld gesehen, ist noch Früh :) Also die Abfrage wäre dann auf GetValue('value') AS TJSONArray. Das Array musst du dann wieder einzeln durchgehen und die einzelnen Objects auslesen, wenn das Array nicht nil ist. Ich würde dir Empfehlen JSON Code in z.B. Notepad++ anzusehen, lade dir zur not einen JSON prettyfier herunter. Dann siehst du aber auch direkt was ein Array und was ein Objekt ist, hab das Gefühl durch deinen Viewer machst du dir den Einstieg nur noch schwieriger. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:16 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz