TccJSON Scripting Beispiel
- Merve Yurdakul
Übersicht
Aus dem Dateisystem soll das File „Konto.json“ geladen und die Inhalte exemplarisch ausgelesen werden.
JSON
{ "Bank":"Deutsche Bank", "IBAN":"DE231234566788912223", "Deckung":1000, "Kreditkarte":false, "Waehrung":"EURO", "Inhaber": { "Name":"Mustermann", "Vorname":"Melanie", "Maennlich":false, "Hobbies":["Reiten","Golfen","Lesen"], "Alter":16, "Kinder":[], "Partner":null } }
Erläuterung
Das JSON-Objekt hat die Attribute Bank, IBAN, Deckung, Waehrung und Inhaber. Während Inhaber eine Instanz der Klasse Konto ist und eigene Attribute besitzt sind die anderen Attribute der Klasse Konto eher einfacher Natur und beinhalten ausschließlich Key/Value Paare. Ein weiteres Augenmerk ist noch auf Hobbies und Kinder sowie auf Partner zu legen. Hobbies ist ein Array und enthält mehrere Werte. In diesem Fall Reiten, Golfen und Lesen. Kinder ist ebenfalls ein Array der aber keine Werte enthält. Partner ist kein Array ihm wurde aber als Wert Null zugewiesen. Das heißt so viel wie ist nicht existent. Geht man weiter ins Detail kann man aus der Datenstruktur auch ersehen, dass es unterschiedliche Datentypen geben muss. Da wäre z.B. Alter. Ihm ist die Zahl 42 zugewiesen, die nicht in Hochkomma steht. Es handelt sich also um einen numerischen Wert. Dagegen ist Vorname eine Zeichenkette. Das wird mit Anführungszeichen gekennzeichnet. Der noch fehlende Datentyp ist ein Boolean. Ein derartiges Attribut ist z.B. Maennlich. Dieses Attribut kann nur zwei Werte true oder false annehmen. Wie würde man jetzt diese Struktur auslesen um zu entscheiden, ob man der Person eine Kreditkarte anbieten möchte oder nicht. Dazu gibt es die Klasse TccJson, die unterschiedlichste Methoden besitzt, um auf die Struktur zuzugreifen.
Beispiel-Code
Var JSON : TccJson; Vorname : String; Name : String; Alter : Real; Deckung : Real; Kreditkarte : Boolean; Begin JSON := TccJson.create; Try If JSON.LoadFromFile('c:\Konto.json') = true then Begin Name := JSON.GetValueAsString('/Inhaber/Name', ''); Vorname := JSON.GetValueAsString('/Inhaber/Vorname', ''); Alter := JSON.GetValueAsNumber('/Inhaber/Alter',0); Deckung := JSON.GetValueAsNumber('/Deckung',0); Kreditkarte := JSON.GetValueAsBoolean('/Kreditkarte',false); If (Alter > 18) and (Deckung > 2000) and (Kreditkarte = false) then Begin ShowMessage('Einmaliges Angebot für ' + Vorname + ' '+Nachname +': Holen Sie sich für ein Jahr Kostenlos die aktuelle Mastercard in Ihrer Filiale ‘); End; End; Finally JSON.Free; End; End;
Erläuterung
In diesem einfach gehaltenen Beispiel sehen Sie, wie Sie die Klasse einsetzen können. Mit Create erzeugen Sie ein Objekt der Klasse TccJson. Dieses Objekt wird natürlich am Schluss wieder mit JSON.Free freigegeben um den Speicher aufzuräumen.
Beachten Sie, dass ohne ein Create auf das Objekt nicht auf die Eigenschaften und Methoden zugegriffen werden kann. Ein Zugriff löst dann eine Exception aus.
Sobald ein TccJSON Objekt erstellt wurde, kann eine JSON Struktur eingelesen werden. Im Beispiel geschieht dies mittels der Methode LoadFromFile. Nachfolgend werden alle Eigenschaften ausgelesen, um entscheiden zu können, ob ein Angebot erstellt werden soll oder nicht. Dies erfolgt über die GetValue-Methoden. Für jeden Datentyp gibt es eine entsprechende Methode. Für den Zugriff verwendet man einen JPath. Er verweist auf die entsprechende Information. Zwischen den Ebenen wird ein Separator eingefügt. Das standardmäßige Trennzeichen ist ein Schrägstrich („/“), welches aber auch individuell angepasst werden kann. So bedeutet „/Inhaber/Name“, dass die JSON-Struktur ein Objekt mit dem Namen Inhaber besitzen muss, das als Attribut den Namen „Name“ trägt. Existiert das referenzierte Attribut oder das Objekt nicht, würde der Standardwert zurückgegeben werden.