![]() |
json für Dummies
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...? :glaskugel: 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":[ ] }, ... |
AW: json für Dummies
Zitat:
|
AW: json für Dummies
|
AW: json für Dummies
Ich als Anfänger verweise an meinen Thread.
![]() 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. |
AW: json für Dummies
Zitat:
Dann kracht es oder? |
AW: json für Dummies
Nö, es kracht nicht, aber man bekommt logischerweise auch kein Ergebnis.
|
AW: json für Dummies
Zitat:
Der Parser SynCommons von mORMot ist nicht umsonst > 2 MB in der Größe. Aber egal war nur ein Vorschlag von mir. |
AW: json für Dummies
Liste der Anhänge anzeigen (Anzahl: 1)
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:
Ich hab die JSON komplett auch einmal angehängt..
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; |
AW: json für Dummies
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:
![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:14 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 by Thomas Breitkreuz