Barvna shema: Riviera
Trenutno dejavna stran: start » de » Dokumentation » Werkzeuge für Microsoft Access » WKL Office JSON » how-to » JSON mit JPath abfragen

JSON mit JPath abfragen

Sie finden Knoten und Werte eines Dokuments über ihren Pfad, filtern die Elemente eines Arrays nach ihren Werten und suchen in beliebiger Tiefe.

Lösungsüberblick

SelectNodes gibt alle Treffer eines JPath-Ausdrucks zurück, SelectSingleNode (Kurzform JPath) den ersten Treffer oder Nothing, Exists, ob es einen Treffer gibt. Die Get-Methoden (GetString …) lesen den ersten Treffer als typisierten Wert. JPath folgt RFC 9535 mit den Erweiterungen und Abweichungen, die unter Werte und Grenzen aufgeführt sind.

Umsetzung

AusdruckFindet
$Die Wurzel
$.customer.name, $['first name']Einen Eintrag; eckige Klammern für Namen mit Leerzeichen oder Sonderzeichen
$.lines[0], $.lines[-1]Ein Element über seine Position ab 0; negative Positionen zählen vom Ende
$.lines[*]Alle Elemente
$..idJede id in beliebiger Tiefe
$.lines[0,2], $.lines[1:3]Eine Auswahl, einen Bereich (Ende ausgeschlossen)
$.lines[?@.price < 10 && @.kind == 'A']Elemente, deren Einträge die Bedingung erfüllen; auch [?(@.price < 10)]
$.lines[?match(@.no, 'A-.*')]Filterfunktionen: length, count, match, search, value
customer.nameOhne $: beginnend an dem Knoten, für den die Methode aufgerufen wird
Dim line As JNode
For Each line In doc.SelectNodes("$.lines[?@.price >= 100]")
    Debug.Print line.GetString("no"), line.GetCurrency("price")
Next
 
' A default covers both a missing key and the value null.
Debug.Print doc.GetString("$.customer.vatId", "")
 
Dim first As JNode
Set first = doc.SelectSingleNode("$..items[?@.stock == 0]")
If Not first Is Nothing Then Debug.Print first.Path

Hinweise

  • match prüft den gesamten Wert gegen einen regulären Ausdruck, search einen beliebigen Teil davon. Die Muster sind reguläre Ausdrücke von .NET, nicht I-Regexp (RFC 9485); ein ungültiges Muster ergibt false, wie es RFC 9535 vorschreibt, und ein Muster, dessen Auswertung länger als eine Sekunde dauert, ergibt ebenfalls false. Siehe Werte und Grenzen.
  • Schlüssel unterscheiden wie in JSON zwischen Groß- und Kleinschreibung.
  • Exists ist auch für einen Schlüssel True, dessen Wert null ist; eine Get-Methode ohne Ersatzwert löst dann einen Fehler aus. Lesen Sie optionale Werte mit Ersatzwert (GetString(path, "")); er deckt einen fehlenden Schlüssel und null gleichermaßen ab.
  • Ein ungültiger Ausdruck löst jePathSyntax mit der Position des Problems aus.
  • Path eines Knotens gibt den kanonischen Ausdruck dieser Bibliothek zurück, der den Knoten wiederfindet (Punktschreibweise, nicht die Klammerform eines Normalized Path nach RFC 9535), zum Beispiel $.lines[2].
  • Kompilierte Ausdrücke werden zwischengespeichert; derselbe Ausdruck in einer Schleife über viele Datensätze wird nicht jedes Mal neu geparst.

Verwandte Themen

de/wiki/msaccess/json/how-to/query-with-jpath.txt · Zadnja sprememba: uporabnika Wolfgang van der Stille