Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   JSON valuePair entfernen (https://www.delphipraxis.net/208685-json-valuepair-entfernen.html)

Kostas 6. Sep 2021 18:10

JSON valuePair entfernen
 
Wie kann man bitte aus dem JSON "vatRate" entfernen?

Code:
{
  "price": {
    "dealerPriceGross": "535.50",
    "vatRate": "1.23",
    "currency": "EUR"
  }
}

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var aJSON: TJSonValue;
    aJSONStr:String;
begin
  aJSONStr := '{"price": { "dealerPriceGross": "535.50", "vatRate": "1.23", "currency": "EUR" }}';

  aJSON := TJSONObject.ParseJSONValue(aJSONStr);


end;

Delphi.Narium 6. Sep 2021 18:27

AW: JSON valuePair entfernen
 
https://docwiki.embarcadero.com/Libr...ect.RemovePair?

Uwe Raabe 6. Sep 2021 18:28

AW: JSON valuePair entfernen
 
Delphi-Quellcode:
var
  aJSON: TJSONValue;
  aJSONObj: TJSONObject;
  aJSONStr: string;
begin
  aJSONStr := '{"price": { "dealerPriceGross": "535.50", "vatRate": "1.23", "currency": "EUR" }}';
  aJSON := TJSONObject.ParseJSONValue(aJSONStr);
  aJSONObj := aJSON.GetValue<TJSONObject>('price');
  aJSONObj.RemovePair('vatRate');
  aJSONStr := aJSON.ToJSON;
end;

Kostas 6. Sep 2021 21:41

AW: JSON valuePair entfernen
 
ach, über TJSONObject. Das habe ich übersehen.

Besten Dank Uwe.

Kostas 9. Sep 2021 17:32

AW: JSON valuePair entfernen
 
Ist es auch möglich das Pair über den path zu adressen um es zu löschen?

Alle Elemente die keinen Wert haben müssen entfernt werden.
Über den Path lässt sich das Pair leider nicht löschen.
In diesem code Beispiel könnte ich schon das Element Price herausziehen und dessen leere Elemente einzelne Element, so wie es der Uwe vorgeschlagen hat.
Danach müsste ich ein neues JSON bauen und alle Elemente einzeln einfügen. Das würde schon gehen.




Code:
{
  "price": {
    "dealerPriceGross": "2890.00",
    "consumerPriceGross": "2890.00",
    "dealerPriceNet": "",
    "consumerPriceNet": "",
    "vatRate": "",
    "type": "FIXED",
    "currency": "EUR"
  },
  "internalNumber": "R033-7781",
  "loadCapacity": 890
}



Delphi-Quellcode:
procedure RemoveItems(var aJSON: TJSONObject);
begin
  aJSON.RemovePair('price.dealerPriceNet'); //über den Path das Pair löschen. So geht es nicht.
end;

Uwe Raabe 9. Sep 2021 17:45

AW: JSON valuePair entfernen
 
Zitat:

Zitat von Kostas (Beitrag 1494387)
Danach müsste ich ein neues JSON bauen und alle Elemente einzeln einfügen.

Wieso müsstest du das tun? In meinem Beispiel erzeugt der letzte Befehl doch schon das bereinigte JSON. Geht das bei dir nicht?

Kostas 10. Sep 2021 10:10

AW: JSON valuePair entfernen
 
Sorry Uwe,

natürlich hast du recht. Es funktioniert einwandfrei.

Irritiert hat mich dass nach dem RemovePair das aJSONObj nicht zurückgeschrieben wird in aJSON.
Doch das braucht es nicht da es darauf referenziert.
Delphi-Quellcode:

aJSONObj.RemovePair('vatRate');
  aJSONStr := aJSON.ToJSON;
Tausend Dank und noch einen schönen Tag.
Gruß Kostas


Alle Zeitangaben in WEZ +1. Es ist jetzt 09: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