die Nr.1 für FileMaker in der Schweiz
die Nr.1 für FileMaker in der Schweiz

Sichere Parameterübergabe mit JSON

Source Code – by Markus Spiske

JSON(JavaScript Object Notation) ist ein schlankes Datenaustauschformat, das für Menschen und Maschinen einfach zu handhaben ist. Im Web hat es sich mittlerweile zum Standard von unzähligen APIs entwickelt. Im FileMaker benutzen es viele auch für die Parameterübergabe bei Scripts.

FileMaker bietet dazu praktische Funktionen zum Generieren und Parsen von JSON wie z.B. JSONGetElementJSONSetElement,und weitere. Es gibt jedoch ein paar Eigenheiten zu beachten.

JSONSetElement

Wenn Zahlen von einem Feld als JSONNumber generiert werden sollen, muss das Feld ein Zahlenfeld sein. Falls das Feld vom Typ «Text» ist, werden Fliesskommazahlen unter Umständen* falsch interpretiert und können auch nicht mit der Funktion LiesAlsZahl/GetAsNumber korrigiert werden. Ebenso werden Zahlen in einem Textfeld nur korrekt generiert, wenn der Datentyp JSONString verwendet wird.

Siehe Tabellen JSONSetElement und JSONSetElement-Beispiele.

Version: FMPA 17
FM-Einstellungen:
– Dezimaltrennzeichen (.) gemäss Einstellung des Betriebssystems 
– Dateioptionen > Dateneingabe: Immer die aktuellen Systemeinstellungen verwenden

Tabelle JSONSetElement

EingabeAusgabe
Text-Feld123.45JSONString“123.45”ok
Text-Feld123.45JSONNumber12345falsch!
Zahlen-Feld123.45JSONString“123,45”falsch!
Zahlen-Feld123.45JSONNumber123.45ok

Tabelle JSONSetElement-Beispiele

Feldwerte
TabelleA::TextfeldA   123.45
TabelleA::ZahlenfeldA   123.45
FunktionRückgabewert
JSONSetElement ( “” ; “a” ; TabelleA::TextfeldA ; JSONString ){“a”:”123.45″}
JSONSetElement ( “” ; “a” ; TabelleA::TextfeldA ; JSONNumber ){“a”:12345}
JSONSetElement ( “” ; “a” ; TabelleA::ZahlenfeldA ; JSONString ){“a”:”123,45″}
JSONSetElement ( “” ; “a” ; TabelleA::ZahlenfeldA ; JSONNumber ){“a”:123.45}
JSONSetElement ( “” ; “a” ; GetAsNumber ( TabelleA::TextfeldA ) ; JSONString ){“a”:”12345″}
JSONSetElement ( “” ; “a” ; GetAsNumber ( TabelleA::TextfeldA ) ; JSONNumber ){“a”:12345}

*= Wenn die FileMaker-Datei auf einem Betriebssystem erstellt wurde, das abweichende Regionale Einstellungen zum aktuellen System hat, tritt der Effekt auf.

JSONGetElement

JSON darf gemäss Spezifikation spezielle Werte wie null, “”, true, false, etc. enthalten. FileMaker interpretiert diese wie folgt:

TabelleA::TextfeldAFunktionRückgabewert
{ “a” : null }JSONGetElement ( TabelleA::TextfeldA ; “a” )[Kommentar 1]
{ “a” : “” }JSONGetElement ( TabelleA::TextfeldA ; “a” )[Kommentar 2]
{ “a” : 0 }JSONGetElement ( TabelleA::TextfeldA ; “a” )0
{ “a” : true }JSONGetElement ( TabelleA::TextfeldA ; “a” )1
{ “a” : false }JSONGetElement ( TabelleA::TextfeldA ; “a” )0

Kommentar 1:
JSONListValues gibt in FMP <= 18 einen leeren Wert zurück

Kommentar 2:
JSONListValues gibt in FMP <= 17 einen leeren Wert zurück
JSONListValues gibt in FMP 18 eine Zeilenschaltung zurück