Zum Ende der Metadaten springen
Zum Anfang der Metadaten

Sie zeigen eine alte Version dieser Seite an. Zeigen Sie die aktuelle Version an.

Unterschiede anzeigen Seitenhistorie anzeigen

Version 1 Aktuelle »

Ü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":true,
    "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.

  • Keine Stichwörter