AGB  ·  Datenschutz  ·  Impressum  







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

JSON & Delphi XE5

Ein Thema von RWarnecke · begonnen am 10. Nov 2013 · letzter Beitrag vom 12. Nov 2013
Antwort Antwort
Lemmy

Registriert seit: 8. Jun 2002
Ort: Berglen
2.395 Beiträge
 
Delphi 10.4 Sydney
 
#1

AW: JSON & Delphi XE5

  Alt 10. Nov 2013, 19:39
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
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.940 Beiträge
 
Delphi 12 Athens
 
#2

AW: JSON & Delphi XE5

  Alt 10. Nov 2013, 19:47
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.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Benutzerbild von Gloegg_FHBI
Gloegg_FHBI

Registriert seit: 28. Nov 2006
Ort: Neuss
46 Beiträge
 
Delphi 10 Seattle Professional
 
#3

AW: JSON & Delphi XE5

  Alt 11. Nov 2013, 07:45
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;
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.940 Beiträge
 
Delphi 12 Athens
 
#4

AW: JSON & Delphi XE5

  Alt 11. Nov 2013, 09:35
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.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Benutzerbild von Gloegg_FHBI
Gloegg_FHBI

Registriert seit: 28. Nov 2006
Ort: Neuss
46 Beiträge
 
Delphi 10 Seattle Professional
 
#5

AW: JSON & Delphi XE5

  Alt 11. Nov 2013, 10:07
Ist jetzt etwas OT:

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.
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.940 Beiträge
 
Delphi 12 Athens
 
#6

AW: JSON & Delphi XE5

  Alt 11. Nov 2013, 10:51
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.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Benutzerbild von RWarnecke
RWarnecke

Registriert seit: 31. Dez 2004
Ort: Stuttgart
4.408 Beiträge
 
Delphi XE8 Enterprise
 
#7

AW: JSON & Delphi XE5

  Alt 11. Nov 2013, 17:12
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 ?
Rolf Warnecke
App4Mission

Geändert von RWarnecke (11. Nov 2013 um 18:54 Uhr)
  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 07:51 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-2025 by Thomas Breitkreuz