JSON hat sich bei einigen Entwicklern als neuer Standard für den Datenaustausch etabliert (z. B. zur Übergabe von Script-Parametern).
Trotzdem können der Verwendung einige Hindernisse im Weg stehen, über die vor allem Einsteiger leicht stolpern (z. B. die Groß-/Kleinschreibung).
Ich werde auf ein paar Probleme bei der Arbeit mit JSON hinweisen, Tipps zur Vereinfachung und Beschleunigung geben und erweiterte Anwendungsoptionen vorstellen.
Der Vortrag stellt mögliche Stolperfallen, aber auch Funktionen und Hilfsmittel für die Arbeit mit JSON vor.
Es geht hauptsächlich um die Anwendung innerhalb von FileMaker, weniger um die Verwendung als externe Schnittstelle (cURL, SOAP, …).
FMK2019 Softwaretest in Filemaker Programmen by Volker Krambrich
FMK2019 JSON im Einsatz by Arnold Kegebein
1. 10. FileMaker Konferenz | Hamburg | 16.-19. Oktober 2019
www.filemaker-konferenz.com
Vor- und Nachteile von JSON und
was man sonst noch wissen sollte
Dipl. Ing. (FH) Arnold Kegebein
JSON im Einsatz
2. 10. FileMaker Konferenz | Hamburg | 16.-19. Oktober 2019
JSON im Einsatz – Dipl. Ing. (FH) Arnold Kegebein
Über den Sprecher
Dipl.-Ing. (FH) Arnold Kegebein
Studium der Technische Informatik
35 Jahre Erfahrung mit Datenbanken
6½ Jahre in den USA als Director IT
Seit 2007 FileMaker Entwickler
Autor für das FileMaker Magazin
Sprecher auf Konferenzen
3. 10. FileMaker Konferenz | Hamburg | 16.-19. Oktober 2019
AuditLog für FileMaker – Dipl.-Ing. (FH) Arnold Kegebein
Über den Vortrag
• Was ist JSON?
Die Geschichte von JSON
Eine kurze Einführung in den Aufbau von JSON
• Probleme mit JSON
Stolpersteine und Fehlerquellen
• JSON im Einsatz
Hilfreiche Funktionen und Tools
Anwendungsbeispiele
• Fragen & Antworten
4. 10. FileMaker Konferenz | Hamburg | 16.-19. Oktober 2019
AuditLog für FileMaker – Dipl.-Ing. (FH) Arnold Kegebein
Was ist JSON?
• JSON steht für JavaScript Object Notation
• Douglas Crockford, 2001 spezifiziert
2103 standardisiert: ECMA-404 und RFC 7158 (2017: RFC 8259)
• Beschreibung: www.json.org
• Formatbeschreibung für den Datenaustausch
• De Facto Standard
8th, ActionScript, Ada, AdvPL, AWK, Bash, BlitzMax, C, C++, C#, Clojure, Cobol,
ColdFusion, D, Dart, Delphi, E, Fantom, FileMaker, Fortran, Go, Groovy, Haskell, Java,
JavaScript, LabVIEW, Lisp, LiveCode, LotusScript, Lua, M, Matlab, Net.Data, Nim,
Objective C, OCaml, PascalScript, Perl, Photoshop, PHP, PicoLisp, Pike, PL/SQL, Prolog,
PureBasic, Puredata, Python, R, Racket, Rebol, RPG, Rust, Ruby, Scheme, Squeak, Tcl,
Visual Basic, Visual FoxPro
5. 10. FileMaker Konferenz | Hamburg | 16.-19. Oktober 2019
AuditLog für FileMaker – Dipl.-Ing. (FH) Arnold Kegebein
Lizenz
• MIT Lizenz (free of charge)
• Lizenz-Zusatz: The software shall be used for good, not evil
JSON Logo
JSONLogoinPublicDomain
9. 10. FileMaker Konferenz | Hamburg | 16.-19. Oktober 2019
AuditLog für FileMaker – Dipl.-Ing. (FH) Arnold Kegebein
Stolpersteine (Überblick)
• Eingeschränkte Umsetzung
• Identische KEYs theoretisch erlaubt, erzeugen in FileMaker einen Fehler
• Leerer Zeichenfolge oder spezielle Zeichen in KEY : "" . [ ]
+ JSONFormatElements, JSONListKeys
– JSONSetElement, JSONGetElement
• Unbekanntes Leerelement null
• Eingebaute Fehler (Bugs)
10. 10. FileMaker Konferenz | Hamburg | 16.-19. Oktober 2019
AuditLog für FileMaker – Dipl.-Ing. (FH) Arnold Kegebein
Stolperstein Syntax
JSON-eigene Formatierung
• Trennzeichen , (Komma, nicht Semikolon)
• Dezimalzeichen . (Punkt, nicht Komma)
• Textquotes bei Keys und Values
• Liberale false, true, null kleingeschrieben
• Sonderzeichen in Value (Auszug)
• " Anführungszeichen "
• n Zeilenvorschub Char 13
• r Wagenrücklauf Char 10
• t Tabulator Char 9
• u#### Unicode-Zeichen
,
.
11. 10. FileMaker Konferenz | Hamburg | 16.-19. Oktober 2019
AuditLog für FileMaker – Dipl.-Ing. (FH) Arnold Kegebein
Falsche Erwartungshaltung, denn …
• Reihenfolge ist irrelevant in Object { Key : Value, … }
• Array Index beginnt mit 0 [ 0, 1, 2, 3 ]
• Keys sind case-sensitive "Name" ≠ "NAME"
• "" ≠ null ≠ 0 externe Systeme
• Formate müssen definiert werden z.B. Datum und Zeitstempel
Stolperstein Mensch
12. 10. FileMaker Konferenz | Hamburg | 16.-19. Oktober 2019
JSON im Einsatz – Dipl. Ing. (FH) Arnold Kegebein
Beispiel Datentyp Datum
Text
• 17. Oktober 2019
• 17.10.2019
• 10/17/2019
• 2019+10+17
Zahl
• 20191017
• 42295
• 43755
• 737555
• 63724752000000
• 1571270400
• 1571263200
[de] DD.MM.YYYY
[us] MM/DD/YYYY
FileMaker ISO-Date YYYY+MM+DD
YYYYMMDD
Excel (Mac 2008 und älter)
Excel (Windows)
FileMaker (UTC)
Unix Epoch (17.10.2019 0:00:00)
FileMaker
Unix Epoch Local Time (GMT+02:00)
13. 10. FileMaker Konferenz | Hamburg | 16.-19. Oktober 2019
AuditLog für FileMaker – Dipl.-Ing. (FH) Arnold Kegebein
Nichts ist kompliziert
FileMaker …
…kennt kein null
…interpretiert null als ""
…interpretiert "" nicht als null
…verarbeitet "" und null unterschiedlich
JSONListValues( json; "" ) …
…führt "" in der List auf
…aber ignoriert null
null
14. 10. FileMaker Konferenz | Hamburg | 16.-19. Oktober 2019
JSON im Einsatz – Dipl. Ing. (FH) Arnold Kegebein
JSONSetElement( $json; $key; $data; JSONString )
JSONSetElement( $json; $key; $data; JSONNull )
Daten
Datentyp
JSONSetElement( ""; $key; ""; JSONNumber ) ➞ 0
JSONNull null
15. 10. FileMaker Konferenz | Hamburg | 16.-19. Oktober 2019
AuditLog für FileMaker – Dipl.-Ing. (FH) Arnold Kegebein
Fallstricke
• Eine leere Zeichenfolge ist kein gültiges JSON-Objekt/Array
JSONGetElement( ""; $key )
? * Line 1, Column 1
Syntax error: value, object or array expected.…
CF JSONGet( ""; $key ) ➞ ""
16. 10. FileMaker Konferenz | Hamburg | 16.-19. Oktober 2019
JSON im Einsatz – Dipl. Ing. (FH) Arnold Kegebein
Hilfreiche Funktionen
Autor: Jared Hague, beezwax
Quelle: https://blog.beezwax.net/2019/08/23/lets-abstract-a-while-in-filemaker/
• JSON_Filter – JSON Array nach verschiedenen Kriterien filtern
• JSON_Map – Alle JSON Array Elemente bearbeiten (Struktur, Daten)
• JSON_Reduce – Verdichtung der Array Elemente, z. B. Summe, Min, Max
Autor: Kevin Frank, filemakerhacks
Quelle: https://blog.beezwax.net/2019/08/23/lets-abstract-a-while-in-filemaker/
• JSON.UpdateArrayElement – Ändern von JSON Arrays
Autor: Kevin Frank, filemakerhacks
Quelle: https://filemakerhacks.com/2019/09/01/fm18-json-insertarrayelement/
• JSON.InsertArrayElement – Einfügen von Elementen in JSON Arrays
17. 10. FileMaker Konferenz | Hamburg | 16.-19. Oktober 2019
JSON im Einsatz – Dipl. Ing. (FH) Arnold Kegebein
Tools
• JSON Formatter & Validator
• https://jsonformatter.curiousconcept.com/
• Unterstützt alle JSON Spezifikationen
18. 10. FileMaker Konferenz | Hamburg | 16.-19. Oktober 2019
AuditLog für FileMaker – Dipl.-Ing. (FH) Arnold Kegebein
• Introducing JSON (Einführung in JSON)
http://www.json.org/
• Learn JSON: Get Started with Portable Data Transportation
https://www.whoishostingthis.com/resources/json-resource/
• Douglas Crockford: The JSON Saga (Video)
https://www.youtube.com/watch?v=-C-JoyNuQJs
• Daisy Graves: Use JSON to Get Arrays [INT 02] (Video)
https://www.youtube.com/watch?v=7J9J75DIPmY&feature=youtu.be
Links
19. 10. FileMaker Konferenz | Hamburg | 16.-19. Oktober 2019
JSON im Einsatz – Dipl. Ing. (FH) Arnold Kegebein
Vielen Dank unseren Sponsoren
Danke für das Bewerten dieses Vortrages