System.JSON.TJSONPathParser
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() {}
};
Inhaltsverzeichnis
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 beispielsweiseroot.child
, um auf die Eigenschaftchild
des Objektsroot
zu zugreifen. - Verwenden Sie
[]
, um auf Objekteigenschaften zu zugreifen, die Anführungszeichen in ihren Namen enthalten. Verwenden Sie beispielsweiseroot['child.name']
oderroot["child.name"]
, um auf die Eigenschaftchild.name
des Objektsroot
zu zugreifen.
- Verwenden Sie
- Indizierungsoperator (
[]
) für Arrays. Verwenden Sie beispielsweiseroot[0]
, um auf das erste Element des Arraysroot
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.