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. JSONGetElement, JSONSetElement,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
Eingabe | Ausgabe | |||
Text-Feld | 123.45 | JSONString | “123.45” | ok |
Text-Feld | 123.45 | JSONNumber | 12345 | falsch! |
Zahlen-Feld | 123.45 | JSONString | “123,45” | falsch! |
Zahlen-Feld | 123.45 | JSONNumber | 123.45 | ok |
Tabelle JSONSetElement-Beispiele
Feldwerte | |
TabelleA::TextfeldA 123.45 | |
TabelleA::ZahlenfeldA 123.45 | |
Funktion | Rü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::TextfeldA | Funktion | Rü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