Objekte und Eigenschaften

www.altova.com Dieses Kapitel drucken Vorherige Seite Eine Ebene nach oben Nächste Seite

Startseite >  Benutzerhandbuch und Referenz > JSON, JSON-Schema > JSON-Schema-Ansicht >

Objekte und Eigenschaften

Ein Objekt steht innerhalb von geschweiften Klammern. In einem Objekt wird ein Wert einem Schlüssel auf folgende Art und Weise zugeordnet: "MeinSchlüssel": Wert. Beim Schlüssel muss es sich immer um einen String handeln, daher muss dieser immer in Anführungszeichen gesetzt werden. Der Wert kann jeden beliebigen JSON-Datentyp haben. Jedes Schlüssel:Wert-Paar wird als Eigenschaft des Objekts bezeichnet (siehe Abbildung unten).

 

Hier sehen Sie ein Beispiel eines instantiierten Objekts mit drei Eigenschaften:

 

    {

      "emailtype": "home",

      "emailaddress": "contact01.home@altova.com",

      "citycode": 22

    }

 

Das Schema für das Objekt würde in der Design-Ansicht etwa folgendermaßen aussehen:

JSONObject01

Beachten Sie bitte die folgenden Punkte:

 

Jede der Eigenschaften muss in der Instanz vorhanden sein. Dies wird durch die durchgezogene Umrandung der Eigenschaften gekennzeichnet. Wenn eine Eigenschaft optional ist, so ist die Umrandung eine gestrichelte Linie. Ob eine Eigenschaft obligatorisch oder optional ist, können Sie im Kontextmenü der Eigenschaft oder in der Eingabehilfe "Details" definieren.
Die Reihenfolge, in der Eigenschaften in der Instanz vorkommen, ist nicht im Schema definiert (und kann dort auch nicht definiert werden), d.h. die Reihenfolge, in der Eigenschaften im Schema definiert sind, spielt keine Rolle.
Eine Eigenschaft wird durch das Symbol eines blauen Quadrats innerhalb von geschweiften Klammern gekennzeichnet. Im Gegensatz dazu wird eine Mustereigenschaft oder ein Eigenschaftsplatzhalter durch andere Symbole gekennzeichnet; siehe unten).
Der Typ einer Eigenschaft kann durch Doppelklick auf den Typ im Diagramm und Auswahl einer Option aus der daraufhin angezeigten Dropdown-Liste bearbeitet werden. Alternativ dazu kann der Typ auch in der Eingabehilfe "Details" ausgewählt werden.
Der Constraint-Wert der Eigenschaft emailaddress wird in der Eingabehilfe "Constraints" definiert.

 

Eigenschaften, Mustereigenschaften, Eigenschaftsplatzhalter und Eigenschaftsnamenschemas

Ein Objekt kann Eigenschaften, Mustereigenschaften, Eigenschaftsplatzhalter und Eigenschaftsnamenschemas (neu in draft-07) haben. Diese können über die Kontextmenüs (i) des Objekts, (ii) des gelben Eigenschaftskastens (Rechtsklick auf den Titel Eigenschaften des Kastens) und (iii) einzelner Eigenschaften zum Objekt hinzugefügt werden. Die Eigenschaften wurden oben beschrieben. Nun wollen wir Mustereigenschaften und Eigenschaftsplatzhalter näher beschreiben.

 

Eine Mustereigenschaft (Abbildung unten) definiert den Namen der Eigenschaft mit Hilfe einer Regular Expression. So wird z.B. in der Regular Expression in der Abbildung unten definiert, dass die Eigenschaft (i) einen Namen haben muss, der mit einem Unterstrich beginnt und (ii) als Wert einen Booleschen Wert haben muss. Mustereigenschaften haben keine obligatorisch-Einschränkung. Sie können beliebig viele Mustereigenschaften hinzufügen. Beachten Sie das Symbol für Mustereigenschaften.

 

JSONObjectPatternProp01

 

Ein Eigenschaftsplatzhalter (Abbildung unten) definiert, dass neben den anderen Eigenschaften der Eigenschaftsgruppe des Objekts beliebig viele Eigenschaften vorhanden sein können. Mit dem Platzhalter kann jedoch ein Typ für diese definiert werden. In der Abbildung links unten sehen Sie einen Eigenschaftsplatzhalter, der Eigenschaften mit einem beliebigen Namen aber einem numerischen Wert definiert. Es kann nur ein Eigenschaftsplatzhalter pro Objekt definiert werden. Wenn für den Platzhalter jedoch der Typ Beliebig definiert ist, so können Sie für jeden Typ in der Eingabehilfe "Constraints" Constraints definieren. Beachten Sie das Symbol für Eigenschaftsplatzhalter.

 

JSONObjectPropertyWildcard

 

Ein Eigenschaftsnamenschema (Abbildung unten) schränkt die Namen der Eigenschaften dieses Objekts ein. (Diese Funktionalität ist neu in draft-07.) So sehen wir z.B. in der Abbildung unten, dass die Namen von Eigenschaften Strings sein müssen. Zusätzlich dazu können wir über die Eingabehilfe "Constraints" weitere Constraints für die Eigenschaft definieren: z.B. dass der Name der Eigenschaft in einem bestimmten Zeichenlängenbereich liegen oder einem bestimmten Muster entsprechen muss.

 

JSONObjectPropertyNamesSchema

 

Anmerkung:Für Mustereigenschaften kann keine Mindest- oder Maximalanzahl definiert werden. Nähere Informationen dazu finden Sie im Abschnitt zur Validierung von Eigenschaften.

 

Wie werden Eigenschaften validiert?

Bei der Validierung von Eigenschaften geht der Validierungsprozessor folgendermaßen vor:

 

1.Zuerst wird der Name der Eigenschaft im Schema mit allen benannten Eigenschaften dieses Objekts verglichen.
2.Wenn keine Übereinstimmung gefunden wird, wird der Name mit allen Mustereigenschaften in der Eigenschaftsgruppe des Objekts verglichen.
3.Wenn immer noch keine Übereinstimmung gefunden wird, so wird der Platzhalter aufgerufen, falls einer vorhanden ist.
4.Wenn für den Namen immer noch keine Übereinstimmung gefunden wird, wird ein Validierungsfehler ausgegeben. Wenn der Name mit dem einer Eigenschaft oder einer Mustereigenschaft übereinstimmt oder wenn ein Platzhalter vorhanden ist, so wird der Wert mit dem Wert der entsprechenden Eigenschaftsdefinition verglichen.
5.Wenn der Instanzwert dem Typ und den Constraints der entsprechenden Eigenschaftsdefinition entspricht, so ist die Eigenschaft gültig. Andernfalls ist sie ungültig.

 

Beispiel

In der Abbildung unten ist ein Objekt mit den folgenden Eigenschaften definiert:

 

Es muss drei Eigenschaften namens emailtype, emailaddress und citycode haben.
Es kann eine oder mehrere Eigenschaften haben, deren Name mit einem Unterstrich beginnt und deren Wert ein Boolescher Wert ist (siehe Mustereigenschaft in der Abbildung unten).
Es kann eine oder mehrere zusätzliche Eigenschaften mit einem beliebigen Namen und Wert haben.

JSONObjectExample

 


© 2019 Altova GmbH