System.JSON.TJSONPathParser

Aus RAD Studio API Documentation
Wechseln zu: Navigation, Suche

Delphi

TJSONPathParser = record

C++

struct DECLSPEC_DRECORD TJSONPathParser
{
public:
    enum class DECLSPEC_DENUM TToken : unsigned char { Undefined, Name, ArrayIndex, Eof, Error };
private:
    System::WideChar *FPathPtr;
    System::WideChar *FPtr;
    System::WideChar *FEndPtr;
    int FTokenArrayIndex;
    System::UnicodeString FTokenName;
    TToken FToken;
    bool __fastcall GetIsEof();
    void __fastcall RaiseError(System::PResStringRec AMsg);
    void __fastcall RaiseErrorFmt(System::PResStringRec AMsg, const System::TVarRec *AParams, const int AParams_High);
    void __fastcall ParseName();
    void __fastcall ParseQuotedName(System::WideChar AQuote);
    void __fastcall ParseArrayIndex();
    void __fastcall ParseIndexer();
    bool __fastcall EnsureLength(int ALength);
    void __fastcall FrontTrim(System::WideChar * &APtr);
    void __fastcall BackTrim(System::WideChar * &APtr);
public:
    __fastcall TJSONPathParser(const System::UnicodeString APath)/* overload */;
    __fastcall TJSONPathParser(const System::WideChar * APathPtr, int ALen)/* overload */;
    TToken __fastcall NextToken();
    __property bool IsEof = {read=GetIsEof};
    __property TToken Token = {read=FToken};
    __property System::UnicodeString TokenName = {read=FTokenName};
    __property int TokenArrayIndex = {read=FTokenArrayIndex};
    TJSONPathParser() {}
};

Eigenschaften

Typ Sichtbarkeit Quelle Unit Übergeordnet
record
struct
public
System.JSON.pas
System.JSON.hpp
System.JSON System.JSON


Beschreibung

Parser eines JSON-Pfads.

Ein JSON-Pfad ist ein String, der einen Pfad zu einem angegebenen Element innerhalb von JSON-Daten festlegt. Ein JSON-Pfad ist für JSON, was XPath (EN) für XML ist.

Unterstützte Syntax für JSON-Pfade

TJSONPathParser implementiert eine Untermenge der von Stefan Gössner definierten JSON-Pfad-Spezifikation (JSON path specification defined by Stefan Gössner (EN)). Ausdrücklich unterstützte Elemente sind:

  • Untergeordnete Operatoren für Objekte:
    • Verwenden Sie ., um auf Objekteigenschaften zu zugreifen, die keinen Punkt in ihren Namen enthalten. Verwenden Sie beispielsweise root.child, um auf die Eigenschaft child des Objekts root zu zugreifen.
    • Verwenden Sie [], um auf Objekteigenschaften zu zugreifen, die Anführungszeichen in ihren Namen enthalten. Verwenden Sie beispielsweise root['child.name'] oder root["child.name"], um auf die Eigenschaft child.name des Objekts root zu zugreifen.
  • Indizierungsoperator ([]) für Arrays. Verwenden Sie beispielsweise root[0], um auf das erste Element des Arrays root zu zugreifen.

Diese Operatoren unterstützen keine speziellen Ausdrücke, sondern nur tatsächliche Werte (Objekteigenschaften oder Array-Index).

Verwenden von TJSONPathParser

Beim Erstellen einer Instanz von TJSONPathParser müssen Sie den Ziel-JSON-Pfad an den Konstruktor übergeben.

Rufen Sie nach dem Erstellen einer Instanz von TJSONPathParser NextToken auf, um durch die Token des angegebenen JSON-Pfads zu iterieren, bis IsEof True ist oder NextToken ein Error-Token zurückgibt.

Token enthält das Token, das vom letzten Aufruf von NextToken zurückgegeben wurde.

Ein Codebeispiel zur Verwendung von TJSONPathParser finden Sie bei der Implementierung von TJSONIterator.Find.

Siehe auch