Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   JSON & Delphi XE5 (https://www.delphipraxis.net/177510-json-delphi-xe5.html)

RWarnecke 10. Nov 2013 19:21


JSON & Delphi XE5
 
Hallo zusammen,

ich bin auf der Suche nach einer Möglichkeit JSON-Daten zu verarbeiten. Ich habe auch schon verschiedene Library's gefunden, die waren aber alle nicht Delphi XE5 kompatibel. Jetzt ist meine Frage, kennt Ihr eine Delphi-Library, die mit Delphi XE5 funktioniert und eventuell kostenlos ist ?

Mit einem REST-Client habe ich es auch schon probiert, hatte aber leider keinen Erfolg dabei die Daten abzurufen. Habe immer den Fehler 403 bekommen. Sollte es nur über einen REST-Client gehen, dann wäre es nett, wenn Ihr mir ein paar Links zu Tutorials für Delphi XE5 zur Verfügung stellen könntet.

daywalker9 10. Nov 2013 19:26

AW: JSON & Delphi XE5
 
SuperObject sollte auch mit XE5 kompatibel sein. superobjrct auf googlecode

Union 10. Nov 2013 19:33

AW: JSON & Delphi XE5
 
War nicht das JSON eine DER NEUERUNGEN in XE5? Außer Android natürlich...

Lemmy 10. Nov 2013 19:39

AW: JSON & Delphi XE5
 
Hi,

ja, XE5 bietet eine eigene Json Implementierung - wenn ich mich richtig erinnere uses Rest.Json; Zumindest gestern hat das recht gut funktioniert ;-)

Grüße

jaenicke 10. Nov 2013 19:47

AW: JSON & Delphi XE5
 
In der Unit Data.DBXJSONReflect gibt es TJSONMarshal und TJSONUnMarshal. Man beachte, dass dabei wegen TEncoding keine TStringList direkt gemarshalled werden kann, dafür gibt es TSerStringList.

Das ist aber auch nicht neu in XE5.
// EDIT:
Ach so, ja die Kapselung in Rest.Json kann neu sein, die hatte ich vorher zumindest nicht gesehen. Die Einschränkung bzgl. TEncoding gilt da genauso, weil die auch nur TJSONMarshal usw. nutzt.

Gloegg_FHBI 11. Nov 2013 07:45

AW: JSON & Delphi XE5
 
Das hier sollte auch unter XE5 funktionieren:
https://bitbucket.org/Gloegg/delphi-xe-json

Bei dem eingebauten DBXJSON schreckt mich immer das viele rumgecaste ab.
Delphi-Quellcode:
procedure ParseJson;
var
  LJsonArr  : TJSONArray;
  LJsonValue : TJSONValue;
  LItem    : TJSONValue;
begin
   LJsonArr   := TJSONObject.ParseJSONValue(TEncoding.ASCII.GetBytes(StrJson),0) as TJSONArray; // soft cast
   for LJsonValue in LJsonArr do
   begin
      for LItem in TJSONArray(LJsonValue) do // hard cast
        Writeln(Format('%s : %s',[TJSONPair(LItem).JsonString.Value, TJSONPair(LItem).JsonValue.Value])); // 2x hard cast
     Writeln;
   end;
end;

jaenicke 11. Nov 2013 09:35

AW: JSON & Delphi XE5
 
Zitat:

Zitat von Gloegg_FHBI (Beitrag 1235375)
Das hier sollte auch unter XE5 funktionieren:
https://bitbucket.org/Gloegg/delphi-xe-json

Tut es, aber abgesehen davon, dass zusätzliche Abhängigkeiten natürlich immer ein Nachteil sind:
Ich finde dort so auf Anhieb keine Möglichkeit ein Objekt aus den JSON Daten zu erzeugen, sprich die Funktionalität des JSON Unmarshallers von Delphi selbst.
Das ist für uns aber die wichtigste Funktion.

Gloegg_FHBI 11. Nov 2013 10:07

AW: JSON & Delphi XE5
 
Ist jetzt etwas OT:

Zitat:

Zitat von jaenicke (Beitrag 1235383)
Ich finde dort so auf Anhieb keine Möglichkeit ein Objekt aus den JSON Daten zu erzeugen, sprich die Funktionalität des JSON Unmarshallers von Delphi selbst.
Das ist für uns aber die wichtigste Funktion.

Mittels TJSON.GeneratePODOUnit(aObject : IJSONObject); kann man sich eine unit generieren lassen, die das JSON-Objekt (oder Array) in eine Delphi-Klasse umwandelt, welches dann methoden SaveToJSON und LoadFromJSON bereitstellt.

jaenicke 11. Nov 2013 10:51

AW: JSON & Delphi XE5
 
Also geht es direkt nicht, ok. Also bleibt mir weiterhin nur die delphieigene Implementierung.

Für den Zweck, den RWarnecke verfolgt, sollte die Bibliothek allerdings ausreichen, ja.

RWarnecke 11. Nov 2013 17:12

AW: JSON & Delphi XE5
 
Hallo zusammen,

danke erstmal für die vielen Antworten. Ich habe jetzt nochmal rumprobiert und die Beispiele in den verschiedenen Links ausprobiert. Leider steige ich hinter das Prinzip von JSON nicht. Gibt es nicht irgendwie eine Library, wo ich nur den JSON Text übergebe und mir die Daten in ein ClientDataSet zum Beispiel übergeben werden. Denn ich habe noch nicht verstanden, wann ist was ein TJSONArray oder ein TJSONObject.

Edit:
So nach ewigen rumprobieren, habe ich es geschafft Daten aus dem JSON-Format auszulesen. Entweder in einer Schleife oder auch einzeln. Als Unterstützung habe ich die Superobject Library genommen. Jetzt bleibt nur noch eine Frage übrig, wie kann ich programmtechnisch abfangen, wenn ich zum Beispiel ein Array anzeigen lassen will ? Gibt es da eine Funktion in der SuperObject Library ?


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:40 Uhr.
Seite 1 von 2  1 2      

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