AGB  ·  Datenschutz  ·  Impressum  







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

json für Dummies

Ein Thema von fabi17 · begonnen am 16. Jan 2021 · letzter Beitrag vom 16. Jan 2021
Antwort Antwort
fabi17

Registriert seit: 1. Mai 2017
44 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#1

json für Dummies

  Alt 16. Jan 2021, 14:49
Tag zusammen,

ich muss eine JSON Datei parsen und habe leider in den Ansätzen schon ziemliche Probleme. Dachte es wäre ein Klacks, aber ich kriege es einfach nicht gebacken... Hier das Beispiel JSON, den unteren Teil habe ich aufgrund der Länge jetzt mal abgeschnitten. Kann mir jemand einen Denkanstoß geben, wie ich jetzt auf beispielsweise die orderitems quantity zugreife...?

Vielen Dank für Hilfe vorab!

{
"page":1,
"totalsCount":2,
"isLastPage":true,
"entries":[
{
"id":102,
"referrerId":0,
"roundTotalsOnly":true,
"numberOfDecimals":4,
"statusName":"Warten auf Zahlung",
"plentyId":52364,
"typeId":1,
"lockStatus":"unlocked",
"locationId":"1",
"createdAt":"2021-01-15T17:28:48+01:00",
"updatedAt":"2021-01-15T17:28:48+01:00",
"statusId":3,
"ownerId":"1",
"relations":[
{
"orderId":102,
"referenceType":"warehouse",
"referenceId":1,
"relation":"sender"
},
{
"orderId":102,
"referenceType":"contact",
"referenceId":102,
"relation":"receiver"
}
],
"properties":[
{
"orderId":102,
"typeId":3,
"value":"0"
},
{
"orderId":102,
"typeId":6,
"value":"de"
},
{
"orderId":102,
"typeId":1,
"value":"1"
},
{
"orderId":102,
"typeId":4,
"value":"unpaid"
},
{
"orderId":102,
"typeId":2,
"value":"6"
}
],
"dates":[
{
"orderId":102,
"typeId":2,
"date":"2021-01-15T17:28:48+01:00"
},
{
"orderId":102,
"typeId":4,
"date":"2021-01-15T17:28:48+01:00"
}
],
"amounts":[
{
"id":2,
"orderId":102,
"isSystemCurrency":true,
"isNet":false,
"currency":"EUR",
"exchangeRate":1,
"netTotal":0.93,
"grossTotal":1,
"vatTotal":0.07,
"invoiceTotal":1,
"paidAmount":0,
"giftCardAmount":0,
"createdAt":"2017-09-13T11:32:23+02:00",
"updatedAt":"2019-01-18T15:28:01+01:00",
"shippingCostsGross":0,
"shippingCostsNet":0,
"prepaidAmount":0,
"vats":[
{
"id":2,
"orderAmountId":2,
"countryVatId":1,
"vatField":0,
"vatRate":19,
"value":0.16,
"createdAt":"2017-09-29T12:07:28+02:00",
"updatedAt":"2019-01-18T15:28:55+01:00",
"netTotal":0.84,
"grossTotal":1
}
]
}
],
"orderReferences":[

],
"orderItems":[
{
"id":102,
"orderId":102,
"typeId":1,
"referrerId":0,
"itemVariationId":1015,
"quantity":1,
"orderItemName":"Loungesessel Wild Tokio",
"attributeValues":"",
"shippingProfileId":6,
"countryVatId":1,
"vatField":0,
"vatRate":19,
"position":"0",
"createdAt":"2021-01-15T17:28:48+01:00",
"updatedAt":"2021-01-15T17:28:48+01:00",
"warehouseId":1,
"orderProperties":[

],
"properties":[
{
"id":3,
"orderItemId":102,
"typeId":21,
"value":"1.00",
"createdAt":"2017-04-19T15:04:12+02:00",
"updatedAt":"2017-04-19T15:04:12+02:00"
}
],
"dates":[

],
"amounts":[
{
"id":2,
"orderItemId":102,
"isSystemCurrency":true,
"currency":"EUR",
"exchangeRate":1,
"purchasePrice":0,
"priceOriginalGross":0.5,
"priceOriginalNet":0.4202,
"priceGross":0.5,
"priceNet":0.4202,
"surcharge":0,
"discount":0,
"isPercentage":true,
"createdAt":"2016-08-30T16:21:51+02:00",
"updatedAt":"2019-01-18T15:25:41+01:00"
}
],
"references":[

]
},
...
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe
Online

Registriert seit: 20. Jan 2006
Ort: Lübbecke
10.994 Beiträge
 
Delphi 12 Athens
 
#2

AW: json für Dummies

  Alt 16. Jan 2021, 15:02
Hier das Beispiel JSON, den unteren Teil habe ich aufgrund der Länge jetzt mal abgeschnitten.
Häng doch die komplette Datei als Attachment an. Wäre auch viel übersichtlicher.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
venice2
(Gast)

n/a Beiträge
 
#3

AW: json für Dummies

  Alt 16. Jan 2021, 16:54
Am einfachsten wäre es damit.
  Mit Zitat antworten Zitat
IMPEGA

Registriert seit: 19. Jan 2008
Ort: Brhv
80 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#4

AW: json für Dummies

  Alt 16. Jan 2021, 18:36
Ich als Anfänger verweise an meinen Thread.
https://www.delphipraxis.net/206578-...ert-lesen.html

DeddyH hat ein TOP Beispiel gepostet. Damit kannst du alles auslesen. Von einfachem Wert, über Array bis Array in Array.
Funktioniert super und sehr leicht verständlich.
  Mit Zitat antworten Zitat
venice2
(Gast)

n/a Beiträge
 
#5

AW: json für Dummies

  Alt 16. Jan 2021, 18:40
Ich als Anfänger verweise an meinen Thread.
https://www.delphipraxis.net/206578-...ert-lesen.html

DeddyH hat ein TOP Beispiel gepostet. Damit kannst du alles auslesen. Von einfachem Wert, über Array bis Array in Array.
Funktioniert super und sehr leicht verständlich.
Und. Was passiert wenn ein Eintrag nicht vorhanden ist?
Dann kracht es oder?
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.537 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: json für Dummies

  Alt 16. Jan 2021, 19:08
Nö, es kracht nicht, aber man bekommt logischerweise auch kein Ergebnis.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
venice2
(Gast)

n/a Beiträge
 
#7

AW: json für Dummies

  Alt 16. Jan 2021, 19:25
Nö, es kracht nicht, aber man bekommt logischerweise auch kein Ergebnis.
OK. Nur für meine Bedürfnisse ist damit nicht alles abgedeckt.

Der Parser SynCommons von mORMot ist nicht umsonst > 2 MB in der Größe.
Aber egal war nur ein Vorschlag von mir.
  Mit Zitat antworten Zitat
fabi17

Registriert seit: 1. Mai 2017
44 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#8

AW: json für Dummies

  Alt 16. Jan 2021, 20:45
Lieben Dank für die ganzen Anregungen. Den Ansatz mit mrot finde ich interessant @venice2, ich scheitere aber sowohl bei mrot als auch bei deddys Ansatz an irgendeiner Stelle der Arrays. Ich habe versucht Deddys Beispiel entsprechend anzupassen. Er gibt mir aber keinen Wert zurück...:

Delphi-Quellcode:
 lJSON := TJSONObject.ParseJSONValue(mmo1.Text) as TJSONObject;

    Value := lJSON.Values['entries'];
    if Assigned(Value) and (Value is TJSONArray) then
      begin
        // Das data-Array
        Arr := TJSONArray(Value);
        for i := 0 to Arr.Count - 1 do
          if Arr.Items[i] is TJSONObject then
            begin
              // Die einzelnen Objekte im data-Array
              lInnerJSON := TJSONObject(Arr.Items[i]);
              Value := lInnerJSON.Values['orderitems'];
              if Assigned(Value) and (Value is TJSONArray) then
                begin
                  // Das art-Array je data-Objekt
                  lInnerArr := TJSONArray(Value);
                  for j := 0 to lInnerArr.Count - 1 do
                    if lInnerArr.Items[j] is TJSONObject then
                      begin
                        // Das gesuchte Objekt innerhalb des art-Arrays
                        lArt := TJSONObject(lInnerArr.Items[j]);
                        if not lArt.TryGetValue<string>('id', lID) then
                          lID := '';
                      end;
                end;
            end;
     end;
Ich hab die JSON komplett auch einmal angehängt..
Angehängte Dateien
Dateityp: txt data.txt (13,1 KB, 6x aufgerufen)

Geändert von fabi17 (16. Jan 2021 um 21:10 Uhr)
  Mit Zitat antworten Zitat
fabi17

Registriert seit: 1. Mai 2017
44 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#9

AW: json für Dummies

  Alt 16. Jan 2021, 22:37
okay ich habe es eben hinbekommen, mit dem Parser von Thomas Erlang. Sehr viel einfacher als die klassischen Möglichkeiten. Dürfte für viele die simpel Parsen wollen die Arbeit erleichtern:

https://github.com/thomaserlang/delphi-json
  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:29 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