JSON mit ot4xb
Moderator: Moderatoren
- Jan
- Marvin
- Beiträge: 14662
- Registriert: Fr, 23. Sep 2005 18:23
- Wohnort: 49328 Melle
- Hat sich bedankt: 21 Mal
- Danksagung erhalten: 88 Mal
- Kontaktdaten:
JSON mit ot4xb
Ich hab da mal 'ne Frage. Als bekennender und bekannter Klassen-Doofy.
Wenn ich mit ot4xb einen JSON-String einlese, dann kann ich ja die Werte z. B. so abfragen: cName := oJsonObject:adresse:name. Das Problem: Wenn es :name nicht gibt, dann scheppert das natürlich zur Laufzeit. Wie kann ich das vorher abfragen? Es gibt ja so Nettigkeiten wie isMethod(), isMemvar(), isMembervar(). Die hier aber entweder nicht zutreffen oder nicht funktionieren. Was wäre da die korrekte Funktion für?
Jan
Wenn ich mit ot4xb einen JSON-String einlese, dann kann ich ja die Werte z. B. so abfragen: cName := oJsonObject:adresse:name. Das Problem: Wenn es :name nicht gibt, dann scheppert das natürlich zur Laufzeit. Wie kann ich das vorher abfragen? Es gibt ja so Nettigkeiten wie isMethod(), isMemvar(), isMembervar(). Die hier aber entweder nicht zutreffen oder nicht funktionieren. Was wäre da die korrekte Funktion für?
Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
- Bertram Hansen
- Foren-Moderator
- Beiträge: 1024
- Registriert: Di, 27. Sep 2005 8:55
- Wohnort: 51379 Leverkusen
- Hat sich bedankt: 28 Mal
- Danksagung erhalten: 20 Mal
- Kontaktdaten:
Re: JSON mit ot4xb
Hallo Jan,
so aus dem Bauch raus.
Kannst du das nicht über die Errorsys abfangen und entsprechend reagieren.
so aus dem Bauch raus.
Kannst du das nicht über die Errorsys abfangen und entsprechend reagieren.
Gruß Bertram
http://www.tobax.de
Mitglied der XUG Cologne
Mitglied der XUG Osnabrück
Beisitzer des Deutschsprachige Xbase-Entwickler e.V.
Solange Kakaobohnen an Bäumen wachsen ist Schokolade Obst!
- Jan
- Marvin
- Beiträge: 14662
- Registriert: Fr, 23. Sep 2005 18:23
- Wohnort: 49328 Melle
- Hat sich bedankt: 21 Mal
- Danksagung erhalten: 88 Mal
- Kontaktdaten:
Re: JSON mit ot4xb
Hallo Bertram,
da würde ich das vermutlich eher über Sequenze und Errorblock machen.
Ich hatte aber gehofft, da gäbe es einen direkteren Weg.
Jan
da würde ich das vermutlich eher über Sequenze und Errorblock machen.
Ich hatte aber gehofft, da gäbe es einen direkteren Weg.
Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
- Werner_Bayern
- Der Entwickler von "Deep Thought"
- Beiträge: 2129
- Registriert: Sa, 30. Jan 2010 22:58
- Wohnort: Niederbayern
- Hat sich bedankt: 30 Mal
- Danksagung erhalten: 75 Mal
Re: JSON mit ot4xb
Servus Jan,
ich mach das so:
ich mach das so:
Code: Alles auswählen
if empty((xTemp := oJson:get_prop("data")))
// gibt's nicht oder kein Wert
else
// alles ok
endif
es grüßt
Werner
<when the music is over, turn off the lights!>
Werner
<when the music is over, turn off the lights!>
- Jan
- Marvin
- Beiträge: 14662
- Registriert: Fr, 23. Sep 2005 18:23
- Wohnort: 49328 Melle
- Hat sich bedankt: 21 Mal
- Danksagung erhalten: 88 Mal
- Kontaktdaten:
Re: JSON mit ot4xb
Hallo Werner,
ah. OK, das Zauberwort heißt also get_prop(). Werd ich gleich mal testen, im Moment läuft der noch mit dem Errorblock durch. Geht auch, ist aber ein wenig krude und radikal und irgendwie schlechter Stil.
Danke für den Tipp.
Jan
ah. OK, das Zauberwort heißt also get_prop(). Werd ich gleich mal testen, im Moment läuft der noch mit dem Errorblock durch. Geht auch, ist aber ein wenig krude und radikal und irgendwie schlechter Stil.
Danke für den Tipp.
Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
- Martin Altmann
- Foren-Administrator
- Beiträge: 16586
- Registriert: Fr, 23. Sep 2005 4:58
- Wohnort: Berlin
- Hat sich bedankt: 116 Mal
- Danksagung erhalten: 48 Mal
- Kontaktdaten:
Re: JSON mit ot4xb
Das ist kein schlechter Stil!
Das ist genau eine von zwei möglichen Arten, zu programmieren - offensives und defensives programmieren. Deine jetzige Variante wäre die offensive.
Viele Grüße,
Martin
Das ist genau eine von zwei möglichen Arten, zu programmieren - offensives und defensives programmieren. Deine jetzige Variante wäre die offensive.
Viele Grüße,
Martin
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/
Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
- Jan
- Marvin
- Beiträge: 14662
- Registriert: Fr, 23. Sep 2005 18:23
- Wohnort: 49328 Melle
- Hat sich bedankt: 21 Mal
- Danksagung erhalten: 88 Mal
- Kontaktdaten:
Re: JSON mit ot4xb
Martin,
dann bin ich vielleicht nicht offensiv genug. Mir behagt es nicht meinen Code bewußt in einen abgefangenen Fehler laufen zu lassen. Auch wenn das geht und erlaubt ist. Klar gibt es immer Ausnahmen, manchmal geht das eindeutig nicht anders. Aber wenn ich das mit einer einfachen Abfrage wie von Werner gezeigt machen kann, dann fühl ich mich da doch wesentlich besser bei.
Jan
dann bin ich vielleicht nicht offensiv genug. Mir behagt es nicht meinen Code bewußt in einen abgefangenen Fehler laufen zu lassen. Auch wenn das geht und erlaubt ist. Klar gibt es immer Ausnahmen, manchmal geht das eindeutig nicht anders. Aber wenn ich das mit einer einfachen Abfrage wie von Werner gezeigt machen kann, dann fühl ich mich da doch wesentlich besser bei.
Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
- brandelh
- Foren-Moderator
- Beiträge: 15710
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 73 Mal
- Danksagung erhalten: 38 Mal
- Kontaktdaten:
Re: JSON mit ot4xb
und flexibler, in der Errorsys regle ich nur, was wirklich immer so sein muss (z.B. Division durch 0 - ist ja eigentlich nicht erlaubt, wir brauchen aber eine 0 als Antwort).
In dem JSON Fall, kann es ja sein, dass in einem Programm oder gar Programmteil genau die Felder vorhanden sein müssen,
sonst muss man alles abweisen und in einem anderen einfach "" als Standard akzeptiert wird.
Wenn ich sowas machen müsste, würde ich eine Klasse schreiben die sich um alle internen Regeln kümmert und von außen einfach zu bedienen ist.
In dem JSON Fall, kann es ja sein, dass in einem Programm oder gar Programmteil genau die Felder vorhanden sein müssen,
sonst muss man alles abweisen und in einem anderen einfach "" als Standard akzeptiert wird.
Wenn ich sowas machen müsste, würde ich eine Klasse schreiben die sich um alle internen Regeln kümmert und von außen einfach zu bedienen ist.
Gruß
Hubert
Hubert
- Tom
- Der Entwickler von "Deep Thought"
- Beiträge: 9394
- Registriert: Do, 22. Sep 2005 23:11
- Wohnort: Berlin
- Hat sich bedankt: 105 Mal
- Danksagung erhalten: 364 Mal
- Kontaktdaten:
Re: JSON mit ot4xb
Ich bin da bei Martin - das ist kein schlechter Stil, sondern aus bestimmten Blickwinkeln sogar ein ziemlich eleganter. Ich verwende beispielsweise auch "IsFieldVar", um herauszubekommen, ob die gerade verwendete Tabelle mandantenbezogen sein kann oder nicht, und ich frage das dadurch bei vielen Tabellen, die nie mandantenbezogen sein können, aber das ist egal. Hauptsache, bei diesen Tabellen wird in diesem Moment ein Inhalt abgeprüft, und das geschieht immer und völlig zuverlässig, ganz egal, ob neue Tabellen hinzukommen. Ähnliche Anwendungsgebiete haben "NoMethod" und, ja, auch ValType() und Type().
Das Problem bei der Sequenz besteht einzig darin, dass sie das Fehlersystem aushebelt. Tritt also in der Sequenz ein anderer Fehler als der erwartete - es gibt die Instanz nicht - auf, so erfährt man das möglicherweise nie.
Boris hat im neuesten Xb2.Net übrigens auch einige JSON-Funktionen veröffentlicht.
Das Problem bei der Sequenz besteht einzig darin, dass sie das Fehlersystem aushebelt. Tritt also in der Sequenz ein anderer Fehler als der erwartete - es gibt die Instanz nicht - auf, so erfährt man das möglicherweise nie.
Boris hat im neuesten Xb2.Net übrigens auch einige JSON-Funktionen veröffentlicht.
Herzlich,
Tom
Tom
- Jan
- Marvin
- Beiträge: 14662
- Registriert: Fr, 23. Sep 2005 18:23
- Wohnort: 49328 Melle
- Hat sich bedankt: 21 Mal
- Danksagung erhalten: 88 Mal
- Kontaktdaten:
Re: JSON mit ot4xb
Tom,
das ist das, was ich meinte. Ich mach sowas halt lieber mit einer genau dafür vorgesehenen Funktion oder Methode, als mit der Brechstange einfach alles wegzufegen. Das manchmal die Brechstange trotzdem der beste Weg ist, ist auch meinerseits durchaus akzeptiert.
Jan
das ist das, was ich meinte. Ich mach sowas halt lieber mit einer genau dafür vorgesehenen Funktion oder Methode, als mit der Brechstange einfach alles wegzufegen. Das manchmal die Brechstange trotzdem der beste Weg ist, ist auch meinerseits durchaus akzeptiert.
Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
- Jan
- Marvin
- Beiträge: 14662
- Registriert: Fr, 23. Sep 2005 18:23
- Wohnort: 49328 Melle
- Hat sich bedankt: 21 Mal
- Danksagung erhalten: 88 Mal
- Kontaktdaten:
Re: JSON mit ot4xb
... und wenn Alaska endlich mal in die Puschen kommen würde, gäbe es das auch schon in Xbase++. Die Var2JSON() gibt es sogar schon, ist nur nicht dokumentiert. Und die JSON2Var() fehlt noch immer komplett. Obwohl Frank mir die schon vor drei Jahren zugesagt hatte. Zeit ist halt immer noch relativ.
Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
- Werner_Bayern
- Der Entwickler von "Deep Thought"
- Beiträge: 2129
- Registriert: Sa, 30. Jan 2010 22:58
- Wohnort: Niederbayern
- Hat sich bedankt: 30 Mal
- Danksagung erhalten: 75 Mal
Re: JSON mit ot4xb
var2json funktioniert schon, wandelt aber ungefragt den Zeichensatz. Hab das letzte Woche an Alaska gemeldet.
Sowas geht bereits.
Code: Alles auswählen
cAktion := DataObject():new()
cAktion:name := "Test"
cAktion:ordernumber := "Test2"
cAktion:taxId := 1
cAktion:mainnumber := "Test2"
xTemp := DataObject():new()
xTemp:number := "A213"
cAktion:mainDetail := xTemp
cJson := var2json(cAktion)
es grüßt
Werner
<when the music is over, turn off the lights!>
Werner
<when the music is over, turn off the lights!>
- Werner_Bayern
- Der Entwickler von "Deep Thought"
- Beiträge: 2129
- Registriert: Sa, 30. Jan 2010 22:58
- Wohnort: Niederbayern
- Hat sich bedankt: 30 Mal
- Danksagung erhalten: 75 Mal
Re: JSON mit ot4xb
Servus,
weiß jemand, wie man eine Prop wieder löscht? Sowas wie
weiß jemand, wie man eine Prop wieder löscht? Sowas wie
Code: Alles auswählen
oJson:del_prop("brauchdichdochnicht")
es grüßt
Werner
<when the music is over, turn off the lights!>
Werner
<when the music is over, turn off the lights!>
- brandelh
- Foren-Moderator
- Beiträge: 15710
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 73 Mal
- Danksagung erhalten: 38 Mal
- Kontaktdaten:
Re: JSON mit ot4xb
Ich speichere "äöü" einer OEM EXE in einer VAR vom Typ DataObject().Werner_Bayern hat geschrieben: ↑Fr, 17. Nov 2017 16:01 var2json funktioniert schon, wandelt aber ungefragt den Zeichensatz.
Rufe var2Json(oDO) auf und speichere die Rückgabe in einer Datei.
Egal welche Codierungen ich bei Notepad+ einstelle, da kommt nie "äöü" raus.
Was ist denn das für ein Zeichensatz ?
Gruß
Hubert
Hubert
- Werner_Bayern
- Der Entwickler von "Deep Thought"
- Beiträge: 2129
- Registriert: Sa, 30. Jan 2010 22:58
- Wohnort: Niederbayern
- Hat sich bedankt: 30 Mal
- Danksagung erhalten: 75 Mal
Re: JSON mit ot4xb
Konnte mir Alaska bisher auch nicht beantworten, wurde an die Entwicklungsabteilung weitergegeben.
es grüßt
Werner
<when the music is over, turn off the lights!>
Werner
<when the music is over, turn off the lights!>
- brandelh
- Foren-Moderator
- Beiträge: 15710
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 73 Mal
- Danksagung erhalten: 38 Mal
- Kontaktdaten:
Re: JSON mit ot4xb
Gerade von Alaska würde ich erwarten, dass solche Funktionen intern den Zeichensatz abfragen (OEM / ANSI) und dann richtig z.B. auf UTF8 umsetzen ... falls das der richtige für jQuery ist.
Ich versuche meine Klassen nach außen unabhängig von der Einstellung zu halten.
Ich versuche meine Klassen nach außen unabhängig von der Einstellung zu halten.
Gruß
Hubert
Hubert