Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi kleine anleitung zur unit lkjson gesucht (https://www.delphipraxis.net/92550-kleine-anleitung-zur-unit-lkjson-gesucht.html)

JonnyGuitar 22. Mai 2007 08:53


kleine anleitung zur unit lkjson gesucht
 
moin zusammen,

ich befasse mich seit gut einer woche mit dem thema json. auf der offiziellen seite JSON wird unter anderem die unit lkjson für delphi angeboten LKJSON.

eigentlich kam ich relativ gut klar damit (dachte ich), nur wenn ich ein paar objekte hinzufüge und ein paar lösche kommen immer irgendwelche speicherverletzungen.

Delphi-Quellcode:
jStart := TlkJSON.ParseText(s) as TlkJSONobject;
jData := TlkJSONobject(jStart.GetField('data'));
jPers := TlkJSONobject(jData.GetField('pers'));
jAddr := TlkJSONlist(jMail.GetField('addr'));
so hole ich mir erstmal das array um das es geht.

nur wenn ich dann diverse sachen in jAddr hinzufüge oder verändere kommen die fehler.

leider habe ich keine doku zu der unit gefunden :(
hat irgendeiner von euch ein kleines tutorial zur verfügung?

mfg Jonny

Lun 4. Jun 2007 12:04

Re: kleine anleitung zur unit lkjson gesucht
 
Hi Jonny,

ein Tutorial kann ich Dir nicht geben aber es gibt noch eine andere Libary, bei der eine Doku dabei ist.
Delphi web utils (uJson)

Ich werde mir die Tage mal beide Libarys angucken. Mal gucken vielleicht kann ich dir dann zu deinem Problem
weiterhelfen.

greetz Lun

hoika 4. Jun 2007 12:22

Re: kleine anleitung zur unit lkjson gesucht
 
Hallo,

deine direkten type casts würde ich mal prüfen.
Bist du sicher, dass

jAddr := TlkJSONlist(jMail.GetField('addr'));

eine "array" zurückliefert.

Das kannst du mit is ja mal prüfen.

Ich sehe in der Unit, dass GetField ein TlkJSONbase zurückgibt.
Davon sind ja dann alle anderen Klassen abgeleitet.

Ein

Delphi-Quellcode:
var
  jBase: TlkJSONbase;
begin
  jBase:= jMail.GetField('addr');
  if jBase is TlkJSONlist then
  begin
    jAddr:= TlkJSONlist(jMail.GetField('addr'));
  end
  else
  begin
    Assert, oder was weiss ich
  end;
ist ja (zumindestens beim Debuggen) nicht verkehrt.

ein
Delphi-Quellcode:
with jBase as TlkJSONlist
würde ich übrigens nicht nehmen, das Debuggen mit is finde ich einfacher



Heiko

JonnyGuitar 4. Jun 2007 12:45

Re: kleine anleitung zur unit lkjson gesucht
 
servus,

erstmal danke für eure antworten.

@lun: die unit hatte ich mir auch schon angeguckt, jedoch ist dort das problem wenn ich dort das json object wieder in einen string umwandeln will um dieses an den server zu schicken das format nicht stimmt.

@hoika: ich bezweifle selber, dass die casts "sauber" sind, jedoch wird mir definitiv eine liste zurückgegeben. die unit ist ja nun in der version 1.01 verfügbar, es sind auch einige neue sinnvolle methoden hinzugekommen, nur treten bei der benutzung extrem viele leaks auf, was mit sicherheit zum einen durch meine falsche benutzung aber auch durch irgendwie nicht funktionierende destructoren auftritt. leider finde ich keine alternativen :(


mfg Jonny


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