parsing JSON

Summary

I very much like 4Ds debugger-window to check the contents of a JSON-file. But sometimes I’d like to have a JSON-parser for the runtime-environment. There is none, so I build one myself.

Mir gefällt der JSON-Parser im 4D Debugger sehr gut. Habe ich ein JSON, das ich nicht kenne, öffne ich es mit 4D und schaue mir die Struktur im Debugger an. Super!


Hier ein Screenshot eines JSON-Dokumentes wie es im Debugger erscheint. Die Struktur des JSON ist übersichtlich, leicht zu verstehen und ich kann mich durchhangeln.

JSON parser of 4D debugger
JSON parser im 4D debugger

Zumindest zur Kontrolle während der Runtime möchte ich Objekte/JSON ebenfalls kontrollieren können. Ein Kollege meinte, ich könnte es mir in einer Stunde bauen. Für den eigentlichen Parser reicht das. Daraus ein Widget zu machen, dieses in eine Test-Umgebung einzubinden und mit unterschiedlichen *.json zu testen, braucht mehr Zeit. Es ist viel Schrott mit der Extension .json unterwegs.

Verwendung

Sie legen in Ihrem Formular ein Unterformular an und weisen diesem das Widget DBZ_JSONWidget zu. Das Widget ist eine Textvariable. In der Textvariablen übergeben Sie den Pfad auf ein JSON-Dokument. Die Tester.app führt das vor.

Anwendung

Hier wurde ein GeoJSON, die haben sehr variable Strukturen, analysiert.

Die Ansicht im DBZ_JSONParserWidget
Die Ansicht im DBZ_JSONParserWidget

Oder hier römisch und kyrillisch gemischt

Römische und kyrillische Buchstaben in einem Dokument
Römische und kyrillische Buchstaben in einem Dokument

Download

Die compilierte Komponente zum Download. Verwenden Sie sie in Ihrer Datenbank, so wie sie ist. Fehlerhafte JSON werden als Ausgabe im Widget gemeldet. Hier zu sehen. Die Testdatenbank gibt es hier zum Download. Die Komponente ist für V15.

JSON-Fehler wird im Widget angezeigt
JSON-Fehler wird im Widget angezeigt. Kein unterbrechender ALERT!

Neue Version vom 14.11.16: zeigt leer-Daten an.

Sourcecode

Möchten Sie die Komponente ausbauen, ergänzen, downgraden auf V14, brauchen Sie den Sourcecode. Davon maile ich Ihnen eine Kopie, sobald Sie sich mit 50,-€ an meinem Aufwand beteiligt haben. Danke!



This is a Screenshot of a JSON-document as 4D-debugger will show you. The JSON-structure is displayed clearly, easy to understand and I can walk the structure.

JSON parser of 4D debugger
JSON parser of 4D debugger

Sometimes I want to see a JSON in runtime, to check what is going wrong or what was expected. A colleague cheered on me: „you get that done in an hour“. He was right as far as the parsing code is concerned. Making this into a widget and setting the widget into a testing. app and checking against *.json-files from the wild, takes quite a while. There is so much garbage using extension .json out there.

Usage

Define a subform inside your form and attach the widget DBZ_JSONWidget. The widget is of type text. Set the text-content to the path point at a JSON-document. The Tester.app shows how to do.

Application

Here you see a GeoJSON, very variable structured:

Die Ansicht im DBZ_JSONParserWidget
This is the DBZ_JSONParserWidget inside the Tester.app

Roman and cyrillic characters mixed in this screenshot

Römische und kyrillische Buchstaben in einem Dokument
Roman and cyrillic characters in one document

Download

The compilied component/widget for download. Use inside your database as is. JSON-errors will be shown inside the widget. Look at this screenshot. Her is the tester.4dbase for download. The widget is V15.

JSON-Fehler wird im Widget angezeigt
JSON-error shown inside the widget. No interrupting ALERT!

New version as of 14 nov 2016: shows key when data empty

Sourcecode

If you want to enhance the component, add features, downgrad to V14, you need the sourcecode. I’ll mail you a copy of that, as soon as you encourage my coding-efforts sending me 50,-€. Thanks!