Zu Hauptinhalt springen Zu ergänzendem Inhalt springen

avpath - Prädikate

avpath-Prädikate ermöglichen Ihnen beim Verfassen von Ausdrücken das Schreiben ganz spezifischer Regeln für auszuwählende Elemente. Prädikate sind Filter, die die ausgewählten Elemente nach Speicherpfad beschränken. Man unterscheidet zwischen zwei möglichen Prädikattypen: Objekt und Position.

Weitere Informationen zu Speicherpfaden finden Sie unter avpath - Lokalisierungspfad.

Objekt-Prädikate

Objekt-Prädikate können in Pfadausdrücken verwendet werden, um eine Teilgruppe von Elementen anhand von booleschen Ausdrücken zu filtern, die auf die Eigenschaften jedes Elements ausgerichtet sind. Objekt-Prädikate sind in Klammern eingefasst.

Basisausdrücke in Objekt-Prädikaten:
  • Numerische Literale (z. B. 1.23)

  • Zeichenfolgen-Literale (z. B. „John Gold“)

  • Boolesche Literale (True/False)

  • Unterpfade (z. B. .nestedProp.deeplyNestedProp)

avpath unterstützt die Verwendung der folgenden Operatortypen in Prädikatausdrücken:
  • Vergleichsoperatoren

  • Vergleichsoperatoren für Zeichenfolgen

  • Logische Operatoren

  • Arithmetische Operatoren

Vergleichsoperatoren
Operator Beschreibung Beispiel

==

Gibt True zurück, wenn beide Operanden identisch sind.

.customers{.id == "1"}

===

Gibt True zurück, wenn beide Operanden ohne Typkonvertierung vollkommen übereinstimmen.

.customers{.id === 1}

!=

Gibt True zurück, wenn die Operanden nicht identisch sind.

.customers{.id != "1"}

!==

Gibt True zurück, wenn die Operanden nicht identisch sind und/oder nicht denselben Typ aufweisen.

.customers{.id !== 1}

>

Gibt True zurück, wenn der linke Operand größer ist als der rechte.

.customers{.id > 1}

>=

Gibt True zurück, wenn der linke Operand größer oder gleich dem rechten Operanden ist.

.customers{.id >= 1}

<

Gibt True zurück, wenn der linke Operand kleiner ist als der rechte.

.customers{.id < 1}

<=

Gibt True zurück, wenn der linke Operand kleiner oder gleich dem rechten Operanden ist.

.customers{.id <= 1}

Regeln für den Vergleich:
  • Wenn es sich bei den zwei zu vergleichenden Operanden um Arrays handelt, ist das Vergleichsergebnis True, wenn der Vergleich von einem Element im ersten und einem Element im zweiten Array das Ergebnis True ergibt.
  • Wenn ein Operand ein Array ist und der andere nicht, dann ergibt der Vergleich das Ergebnis True, wenn in einem Array ein Element vorhanden ist und der Vergleich dieses Elements mit dem anderen Operanden True ergibt.
  • Primitive werden als gängige Javascript-Primitive verglichen.

Wenn es sich bei beiden Operanden um Zeichenfolgen handelt, sind zusätzliche Vergleichsoperatoren verfügbar:

Vergleichsoperatoren für Zeichenfolgen
Operator Beschreibung Beispiel

==

Wie der Standardoperator ==, aber es wird nicht zwischen Groß- und Kleinschreibung unterschieden

.customers{.Lastname == "Von Celaeno"}

^==

Gibt True zurück, wenn der linke Operandwert mit dem rechten Operandwert beginnt.

.customers{.Lastname ^== "Celaeno"}

^=

Wie ^==, aber es wird nicht zwischen Groß- und Kleinschreibung unterschieden

.customers{.Lastname ^= "celaeno"}

$==

Gibt True zurück, wenn der linke Operandwert mit dem rechten Operandwert endet.

.customers{.Lastname $== "Von"}

$=

Wie $==, aber es wird nicht zwischen Groß- und Kleinschreibung unterschieden

.customers{.Lastname $= "von"}

*==

Gibt True zurück, wenn der linke Operandwert den rechten Operandwert enthält.

.customers{.Lastname \*== "Celaeno"}

*=

Wie *==, aber es wird nicht zwischen Groß- und Kleinschreibung unterschieden

.customers{.Lastname \*= "celaeno"}

Logische Operatoren
Operator Beschreibung Beispiel

&&

Gibt True zurück, wenn beide Operanden den Wert True aufweisen.

.customers{.Revenue > 77000 && .customers.Lastname === "Von Celaeno"}

||

Gibt True zurück, wenn einer der Operanden den Wert True aufweist.

.customers{.Firstname === "Quentin" || .State === "AZ"}

!

Negiert den Operanden.

.customers{!.Firstname}

Logische Operatoren konvertieren ihre Operanden in boolesche Werte:
  • Wenn der Operand ein Array ist (die Anwendung eines Unterpfads ergibt ebenfalls ein Array):
    • Wenn die Länge des Arrays größer ist als null, ist das Ergebnis True.
    • Andernfalls ist das Ergebnis False.
  • In allen anderen Fällen Übergabe mit doppeltem NOT(!!)-Javascript-Operator.
Arithmetische Operatoren
Operator Beschreibung

+

Addition

-

Subtraktion

*

Multiplikation

/

Division

%

Modulo

Rangordnung der Operatoren
Operator Beschreibung

1 (erste Stelle)

! -unary

2

* / %

3

+ -binary

4

>=

5

== === != !== ^= ^== $== $= *= *==

6

&&

7

||

Klammern werden eingesetzt, um die Rangfolge explizit auszuweisen, indem die Teile eines Ausdrucks gruppiert werden, die zuerst ausgewertet werden sollen.

Beispiele:

// find the last name of the customer who lives in South Roosevelt Drive
avpath.select(doc, ".customers{.Address.Street === \"South Roosevelt Drive\"}.Lastname", schema)
// ['Novo']

// find all States where the customers revenue is less than 78000
avpath.select(doc, ".customers{.Revenue < 78000}.States", schema)
// ['AZ', 'CT']

Positions-Prädikate von Arrays

Positions-Prädikate ermöglichen Ihnen die Filterung von Elementen nach deren Kontextposition. Positions-Prädikate sind immer in eckige Klammern gesetzt.

Vier verschiedene Formen sind verfügbar:
  • [index] — Gibt ein indexpositioniertes Element im Kontext zurück (das erste Element befindet sich an Index 0). Beispiel: [3] gibt das vierte Element im Kontext zurück.

  • [index:] — Gibt Elemente zurück, deren Index im Kontext größer oder gleich dem angegebenen Index ist. Beispiel: [2:] gibt Elemente zurück, deren Index im Kontext größer oder gleich 2 ist.

  • [:index] — Gibt Elemente zurück, deren Index im Kontext kleiner ist als der angegebene Index. Beispiel: [:5] gibt die ersten fünf Elemente im Kontext zurück.

  • [indexFrom:indexTo] — Gibt Elemente zurück, deren Index im Kontext größer oder gleich dem Anfangswert indexFrom und kleiner als der Endwert indexTo ist. Beispiel: [2:5] gibt drei Elemente mit den Indizes 2, 3, und 4 zurück.

Sie können ebenfalls negative Positionszahlen verwenden:
  • [-1] — Gibt das letzte Element im Kontext zurück.

  • [-3] — Gibt die letzten drei Elemente im Kontext zurück.

Beispiele:

// find first customer state
avpath.select(doc, ".customers[0].States")
// ['AZ']

// find last customer state
avpath.select(doc, ".customers[-1].States")
// ['CT']

// find two customer states from second position
avpath.select(doc, ".customers[1:3].States")
// ['NC', 'CT']

Schlüssel-Prädikate zur Zuordnung

Anhand von Schlüssel-Prädikaten können Sie Elemente über reguläre Ausdrücke (Regex) nach deren Schlüssel filtern. Regex-Prädikate sind immer von () umschlossen.
  • ("key" | ~"key regex") — Gibt Elemente im Kontext zurück (die dem Regex entsprechen).

Mehrere Prädikate

Sie können mehr als ein Prädikat verwenden. Das Ergebnis enthält dann nur Elemente, die allen Prädikaten entsprechen.

// find first customer name whose revenue less than 70000 and greater than 50000
avpath.select(doc, ".customers{.Revenue < 70000}{.Revenue > 50000}[0].Firstname")
// ['Quentin']

Hat diese Seite Ihnen geholfen?

Wenn Sie ein Problem mit dieser Seite oder ihrem Inhalt feststellen, sei es ein Tippfehler, ein ausgelassener Schritt oder ein technischer Fehler, informieren Sie uns bitte!