Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Maskierten JSON-String demaskieren (https://www.delphipraxis.net/201106-maskierten-json-string-demaskieren.html)

Codehunter 24. Jun 2019 10:37

Maskierten JSON-String demaskieren
 
Hallo!

Ich bekomme von einem REST-Service u.a. folgende Rückgabe:
Code:
"CurrentValue": "{\n \"value\": null,\n \"valueType\": \"String\"\n}"
Nun könnte ich das "zu Fuß" mit StringReplace demaskieren. Aber irgendwie habe ich das Gefühl, da hat Jean Pütz schon mal was vorbereitet ;-)

Defakto muss ich den Wert von "CurrentValue", der als
Code:
{\n \"value\": null,\n \"valueType\": \"String\"\n}
geliefert wird, in
Code:
{"value": null, "valueType": "String"}
umwandeln. Also flat-JSON ohne Umbrüche.

Viele Grüße
Cody

Neutral General 24. Jun 2019 12:00

AW: Maskierten JSON-String demaskieren
 
Wenn du den Wert von "CurrentValue" über ein TJSONObject ausließt, dann erhältst du schon das was du haben willst (allerdings mit Zeilenumbrüchen, wobei die ja eigentlich nicht schlimm sind.. aber notfalls kannst du die ja entfernen):

Delphi-Quellcode:
uses
  System.JSON;

const
  EXAMPLE_JSON = '{' + sLineBreak +
                 ' "CurrentValue": "{\n \"value\": null,\n \"valueType\": \"String\"\n}"' + sLineBreak +
                 '}';

procedure TForm3.FormCreate(Sender: TObject);
var json: TJSONObject;
    val: String;
begin
  json := TJSONObject.ParseJSONValue(EXAMPLE_JSON) as TJSONObject;
  try
    val := json.GetValue<String>('CurrentValue');
    ShowMessage(val);
  finally
    json.Free;
  end;
end;
Zitat:

[Window Title]
Project1

[Content]
{
"value": null,
"valueType": "String"
}

[OK]

mjustin 24. Jun 2019 12:05

AW: Maskierten JSON-String demaskieren
 
Mit https://github.com/ahausladen/JsonDataObjects sollte das kein Problem sein:

1. String parsen

Delphi-Quellcode:
var
  Obj: TJsonObject;
  Result: string;
begin
  Obj := TJsonObject.Parse('{\n \"value\": null,\n \"valueType\": \"String\"\n}') as TJsonObject;
2. JSON im kompakten Format einem String zuweisen:

Delphi-Quellcode:
  ShowMessage(Obj.ToJSON({Compact:=}True));

finally
    Obj.Free;
end;

Neutral General 24. Jun 2019 12:11

AW: Maskierten JSON-String demaskieren
 
Dafür kann man auch System.JSON.TJSONObject benutzen. Da braucht man sich nix runterladen.


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