System.JSON.Builders.TJSONIterator
Delphi
TJSONIterator = class
C++
class PASCALIMPLEMENTATION TJSONIterator : public System::TObject
Sommaire
Propriétés
Type | Visibilité | Source | Unité | Parent |
---|---|---|---|---|
class | public | System.JSON.Builders.pas System.JSON.Builders.hpp |
System.JSON.Builders | System.JSON.Builders |
Description
Vous permet de parcourir le contenu fourni par le lecteur JSON.
Les itérateurs sont similaires au lecteur JSON, mais ils fournissent des fonctionnalités supplémentaires et se comportent légèrement différemment. Par exemple :
- Il n'est pas nécessaire que les itérateurs parcourent tous les tokens. Vous pouvez avancer jusqu'à un tableau ou des éléments d'objet spécifiques, ignorer des parties de tableaux ou d'objets ou ignorer des tableaux et objets complets.
- Lorsqu'un itérateur se trouve au niveau du token d'un tableau ou de la valeur d'un objet, vous pouvez lire l'index de tableau ou la clé d'objet qui correspond à cette valeur. Il est inutile de suivre ces informations séparément.
- Les itérateurs ne s'arrêtent pas au niveau des clés d'objet. Ils ignorent les clés et parcourent les tokens jusqu'à atteindre la valeur correspondante. Vous pouvez lire la clé d'un token de valeur à partir de la propriété Key de l'itérateur.
Parcourir les données d'entrée
Pour parcourir le contenu du lecteur JSON source :
- A l'aide la propriété Create, créez un itérateur JSON qui lit les données à partir du lecteur JSON.
- Appelez Next pour que le lecteur se déplace jusqu'au premier token JSON des données d'entrée.
- Type indique le type du token.
- Si vous parcourez un tableau, utilisez Index pour obtenir l'index du token en cours. Si vous parcourez un objet, utilisez Key pour obtenir la clé du token en cours.
- Utilisez l'une des propriétés de valeur de l'itérateur pour accéder à la valeur du token en cours. Le type d'un token détermine le type de sa valeur, ce qui détermine la propriété de valeur que vous devez utiliser pour accéder à la valeur du token. Par exemple, si Type vaut
Boolean
, vous pouvez appeler AsBoolean pour accéder à la valeur booléenne du token en cours.
- Continuez à appeler Next pour parcourir tous les tokens JSON des données d'entrée. Next renvoie
False
lorsqu'elle atteint la fin des données d'entrée.
Vous pouvez utiliser Rewind pour replacer l'itérateur au début des données d'entrée.
Propriétés de valeur
TJSONIterator fournit plusieurs propriétés que vous pouvez lire pour obtenir la valeur du token en cours de l'itérateur. La valeur de la propriété Type détermine quelles propriétés vous pouvez utiliser pour lire la valeur.
Le tableau suivant affiche certaines valeurs de la propriété Type et les propriétés de TJSONIterator que vous pouvez utiliser pour lire la valeur du token en cours :
Valeur Type | Propriétés TJSONIterator |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
AsString |
|
Pour accéder à la valeur du token en cours dans un format différent, vous pouvez utiliser AsValue ou AsVariant.
Utilisation de la récursivité
TJSONIterator est un itérateur superficiel par défaut. Chaque fois que l'itérateur atteint un token de type TJsonToken.StartObject
ou TJsonToken.StartObject
, vous devez appeler Recurse avant l'appel suivant à Next pour garantir que l'itérateur n'ignore pas l'ensemble du tableau ou de l'objet.
Pendant la récursivité, vous pouvez utiliser Return pour ignorer le contenu restant du tableau ou de l'objet en cours, et replacer l'itérateur au niveau du parent du tableau ou de l'objet.
Lorsque vous démarrez l'itération du lecteur JSON source, Depth vaut 0. Chaque fois que vous utilisez la récursivité pour accéder à un tableau ou à un objet, la profondeur (Depth) augmente de 1. Lorsque vous quittez un tableau ou un objet, soit parce que vous êtes arrivé à la fin, soit parce que vous avez ignoré le contenu pour accéder directement à la fin en utilisant Return, la profondeur décroît de 1. InRecurse indique si la profondeur de l'itérateur est supérieure à 0.
ParentType indique le type du parent du token en cours, qui peut être TJsonToken.StartObject
ou TJsonToken.StartObject
. En l'absence de profondeur, ParentType vaut TJsonToken.None
.
Vérification de l'existence de données spécifiques
Utilisez Find pour déterminer si le contenu du lecteur JSON source contient des données correspondant à un chemin JSON donné.