JsonReader Classe
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
Lit une valeur encodée JSON (RFC 4627) en tant que flux de jetons.
[Android.Runtime.Register("android/util/JsonReader", DoNotGenerateAcw=true)]
public sealed class JsonReader : Java.Lang.Object, IDisposable, Java.IO.ICloseable
[<Android.Runtime.Register("android/util/JsonReader", DoNotGenerateAcw=true)>]
type JsonReader = class
inherit Object
interface ICloseable
interface IJavaObject
interface IDisposable
interface IJavaPeerable
- Héritage
- Attributs
- Implémente
Remarques
Lit une valeur encodée JSON (RFC 4627) en tant que flux de jetons. Ce flux inclut les deux valeurs littérales (chaînes, nombres, booléens et null) ainsi que les délimiteurs de début et de fin des objets et des tableaux. Les jetons sont parcourus dans un ordre détaillé, le même ordre qu’ils apparaissent dans le document JSON. Dans les objets JSON, les paires nom/valeur sont représentées par un seul jeton.
<h3>Analyse JSON</h3> Pour créer un analyseur de descente récursive pour vos propres flux JSON, commencez par créer une méthode de point d’entrée qui crée un JsonReader.
Ensuite, créez des méthodes de gestionnaire pour chaque structure dans votre texte JSON. Vous aurez besoin d’une méthode pour chaque type d’objet et pour chaque type de tableau.
<ul><li>In <strong>array handling</strong> methods, first call #beginArray to consume the array’s opening crochet. Créez ensuite une boucle while qui accumule les valeurs, ce qui se termine lorsqu’elle #hasNext a la valeur false. Enfin, lisez le crochet fermant du tableau en appelant #endArray.
<li>Within <strong>object handling</strong> methods, first call #beginObject to consume the object’s opening brace. Créez ensuite une boucle while qui affecte des valeurs à des variables locales en fonction de leur nom. Cette boucle doit se terminer lorsqu’elle #hasNext a la valeur false. Enfin, lisez l’accolade fermante de l’objet en appelant #endObject.
</ul>
Lorsqu’un objet ou tableau imbriqué est rencontré, délégué à la méthode de gestionnaire correspondante.
Lorsqu’un nom inconnu est rencontré, les analyseurs stricts doivent échouer avec une exception. Les analyseurs lenient doivent appeler #skipValue() pour ignorer de manière récursive les jetons imbriqués de la valeur, qui peuvent autrement être en conflit.
Si une valeur peut être null, vous devez d’abord vérifier à l’aide #peek()de . Les littéraux Null peuvent être consommés à l’aide de l’une ou l’autre #nextNull() .#skipValue()
<Exemple h3></h3> Supposons que nous aimerions analyser un flux de messages tels que les suivants :
{@code
[
{
"id": 912345678901,
"text": "How do I read JSON on Android?",
"geo": null,
"user": {
"name": "android_newb",
"followers_count": 41
}
},
{
"id": 912345678902,
"text": "@android_newb just use android.util.JsonReader!",
"geo": [50.454722, -104.606667],
"user": {
"name": "jesse",
"followers_count": 2
}
}
]}
Ce code implémente l’analyseur pour la structure ci-dessus :
{@code
public List<Message> readJsonStream(InputStream in) throws IOException {
JsonReader reader = new JsonReader(new InputStreamReader(in, "UTF-8"));
try {
return readMessagesArray(reader);
} finally {
reader.close();
}
}
public List<Message> readMessagesArray(JsonReader reader) throws IOException {
List<Message> messages = new ArrayList<Message>();
reader.beginArray();
while (reader.hasNext()) {
messages.add(readMessage(reader));
}
reader.endArray();
return messages;
}
public Message readMessage(JsonReader reader) throws IOException {
long id = -1;
String text = null;
User user = null;
List<Double> geo = null;
reader.beginObject();
while (reader.hasNext()) {
String name = reader.nextName();
if (name.equals("id")) {
id = reader.nextLong();
} else if (name.equals("text")) {
text = reader.nextString();
} else if (name.equals("geo") && reader.peek() != JsonToken.NULL) {
geo = readDoublesArray(reader);
} else if (name.equals("user")) {
user = readUser(reader);
} else {
reader.skipValue();
}
}
reader.endObject();
return new Message(id, text, user, geo);
}
public List<Double> readDoublesArray(JsonReader reader) throws IOException {
List<Double> doubles = new ArrayList<Double>();
reader.beginArray();
while (reader.hasNext()) {
doubles.add(reader.nextDouble());
}
reader.endArray();
return doubles;
}
public User readUser(JsonReader reader) throws IOException {
String username = null;
int followersCount = -1;
reader.beginObject();
while (reader.hasNext()) {
String name = reader.nextName();
if (name.equals("name")) {
username = reader.nextString();
} else if (name.equals("followers_count")) {
followersCount = reader.nextInt();
} else {
reader.skipValue();
}
}
reader.endObject();
return new User(username, followersCount);
}}
<h3>Number Handling</h3> Ce lecteur permet de lire des valeurs numériques sous forme de chaînes et de valeurs de chaîne à lire en tant que nombres. Par exemple, les deux éléments du tableau [1, "1"] JSON peuvent être lus à l’aide de l’une ou l’autre #nextInt .#nextString Ce comportement est destiné à empêcher les conversions numériques perdues : double est le seul type numérique de JavaScript et les valeurs très volumineuses telles que 9007199254740993 ne peuvent pas être représentées exactement sur cette plateforme. Pour réduire la perte de précision, les valeurs extrêmement volumineuses doivent être écrites et lues en tant que chaînes au format JSON.
Chacun JsonReader peut être utilisé pour lire un seul flux JSON. Les instances de cette classe ne sont pas thread-safe.
Java documentation pour android.util.JsonReader.
Les parties de cette page sont des modifications basées sur le travail créé et partagé par Android Open Source et utilisées en fonction des termes décrits dans la Creative Commons 2.5 Attribution License.
Constructeurs
| Nom | Description |
|---|---|
| JsonReader(Reader) |
Crée une instance qui lit un flux encodé JSON à partir de |
Propriétés
| Nom | Description |
|---|---|
| Class |
Retourne la classe runtime de ce |
| Handle |
Handle de l’instance Android sous-jacente. (Hérité de Object) |
| HasNext |
Retourne true si le tableau ou l’objet actuel a un autre élément. |
| JniIdentityHashCode |
Obtient le code de hachage d’identité affecté à cet homologue Java par le runtime d’interopérabilité. (Hérité de Object) |
| JniManagedPeerState |
Lit une valeur encodée JSON (RFC 4627) en tant que flux de jetons. (Hérité de JavaObject) |
| JniPeerMembers |
Lit une valeur encodée JSON (RFC 4627) en tant que flux de jetons. |
| Lenient |
Retourne true si cet analyseur est libéral dans ce qu’il accepte. -ou- Configurez cet analyseur pour qu’il soit libéral dans ce qu’il accepte. |
| PeerReference |
Obtient la référence d’objet JNI pour cet homologue Java. (Hérité de Object) |
| ThresholdClass |
Cette API prend en charge l’infrastructure Mono pour Android et n’est pas destinée à être utilisée directement à partir de votre code. (Hérité de Object) |
| ThresholdType |
Cette API prend en charge l’infrastructure Mono pour Android et n’est pas destinée à être utilisée directement à partir de votre code. (Hérité de Object) |
Méthodes
| Nom | Description |
|---|---|
| BeginArray() |
Consomme le jeton suivant à partir du flux JSON et affirme qu’il s’agit du début d’un nouveau tableau. |
| BeginArrayAsync() |
Lit une valeur encodée JSON (RFC 4627) en tant que flux de jetons. |
| BeginObject() |
Consomme le jeton suivant à partir du flux JSON et affirme qu’il s’agit du début d’un nouvel objet. |
| BeginObjectAsync() |
Lit une valeur encodée JSON (RFC 4627) en tant que flux de jetons. |
| Clone() |
Crée et retourne une copie de cet objet. (Hérité de Object) |
| Close() |
Ferme ce lecteur JSON et le sous-jacent |
| Construct(JniObjectReference, JniObjectReferenceOptions) |
Lit une valeur encodée JSON (RFC 4627) en tant que flux de jetons. (Hérité de JavaObject) |
| Dispose() |
Libère les ressources détenues par cet homologue Java. (Hérité de Object) |
| Dispose(Boolean) |
Libère les ressources détenues par cet homologue Java. (Hérité de Object) |
| DisposeUnlessReferenced() |
Lit une valeur encodée JSON (RFC 4627) en tant que flux de jetons. (Hérité de JavaObject) |
| EndArray() |
Consomme le jeton suivant à partir du flux JSON et affirme qu’il s’agit de la fin du tableau actuel. |
| EndArrayAsync() |
Lit une valeur encodée JSON (RFC 4627) en tant que flux de jetons. |
| EndObject() |
Consomme le jeton suivant à partir du flux JSON et affirme qu’il s’agit de la fin de l’objet actuel. |
| EndObjectAsync() |
Lit une valeur encodée JSON (RFC 4627) en tant que flux de jetons. |
| Equals(Object) |
Lit une valeur encodée JSON (RFC 4627) en tant que flux de jetons. (Hérité de JavaObject) |
| Equals(Object) |
Indique si un autre objet est « égal à » celui-ci. (Hérité de Object) |
| GetHashCode() |
Retourne une valeur de code de hachage pour l’objet. (Hérité de Object) |
| JavaFinalize() |
Appelé par le garbage collector sur un objet lorsque le garbage collection détermine qu’il n’y a plus de références à l’objet. (Hérité de Object) |
| NextBoolean() |
Retourne la |
| NextBooleanAsync() |
Lit une valeur encodée JSON (RFC 4627) en tant que flux de jetons. |
| NextDouble() |
Retourne la |
| NextDoubleAsync() |
Lit une valeur encodée JSON (RFC 4627) en tant que flux de jetons. |
| NextInt() |
Retourne la |
| NextIntAsync() |
Lit une valeur encodée JSON (RFC 4627) en tant que flux de jetons. |
| NextLong() |
Retourne la |
| NextLongAsync() |
Lit une valeur encodée JSON (RFC 4627) en tant que flux de jetons. |
| NextName() |
Retourne le jeton suivant, un |
| NextNameAsync() |
Lit une valeur encodée JSON (RFC 4627) en tant que flux de jetons. |
| NextNull() |
Consomme le jeton suivant à partir du flux JSON et affirme qu’il s’agit d’une valeur null littérale. |
| NextNullAsync() |
Lit une valeur encodée JSON (RFC 4627) en tant que flux de jetons. |
| NextString() |
Retourne la |
| NextStringAsync() |
Lit une valeur encodée JSON (RFC 4627) en tant que flux de jetons. |
| Notify() |
Réveille un thread unique qui attend le moniteur de cet objet. (Hérité de Object) |
| NotifyAll() |
Réveille tous les threads qui attendent le moniteur de cet objet. (Hérité de Object) |
| Peek() |
Retourne le type du jeton suivant sans l’utiliser. |
| PeekAsync() |
Lit une valeur encodée JSON (RFC 4627) en tant que flux de jetons. |
| SetHandle(IntPtr, JniHandleOwnership) |
Définit la propriété Handle. (Hérité de Object) |
| SetPeerReference(JniObjectReference, JniObjectReferenceOptions) |
Lit une valeur encodée JSON (RFC 4627) en tant que flux de jetons. (Hérité de JavaObject) |
| SkipValue() |
Ignore la valeur suivante de manière récursive. |
| SkipValueAsync() |
Lit une valeur encodée JSON (RFC 4627) en tant que flux de jetons. |
| ToArray<T>() |
Crée un tableau managé à partir de ce wrapper de tableau Java. (Hérité de Object) |
| ToString() |
Retourne une représentation sous forme de chaîne de l’objet. (Hérité de Object) |
| UnregisterFromRuntime() |
Annule l’inscription de cet homologue Java à partir du runtime d’interopérabilité. (Hérité de Object) |
| Wait() |
Provoque l’attente du thread actuel jusqu’à ce qu’il soit réveillé, généralement en étant <averti par em ou><em>interrompu</em>.<> (Hérité de Object) |
| Wait(Int64, Int32) |
Provoque l’attente du thread actuel jusqu’à ce qu’il soit réveillé, généralement en étant <averti> par< em>ou <em>interrompu/em<,> ou jusqu’à ce qu’une certaine quantité de temps réel s’est écoulée. (Hérité de Object) |
| Wait(Int64) |
Provoque l’attente du thread actuel jusqu’à ce qu’il soit réveillé, généralement en étant <averti> par< em>ou <em>interrompu/em<,> ou jusqu’à ce qu’une certaine quantité de temps réel s’est écoulée. (Hérité de Object) |
Implémentations d’interfaces explicites
| Nom | Description |
|---|---|
| IJavaPeerable.Disposed() |
Lit une valeur encodée JSON (RFC 4627) en tant que flux de jetons. (Hérité de JavaObject) |
| IJavaPeerable.Finalized() |
Lit une valeur encodée JSON (RFC 4627) en tant que flux de jetons. (Hérité de JavaObject) |
| IJavaPeerable.JniObjectReferenceControlBlock |
Lit une valeur encodée JSON (RFC 4627) en tant que flux de jetons. (Hérité de JavaObject) |
| IJavaPeerable.SetJniIdentityHashCode(Int32) |
Lit une valeur encodée JSON (RFC 4627) en tant que flux de jetons. (Hérité de JavaObject) |
| IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) |
Lit une valeur encodée JSON (RFC 4627) en tant que flux de jetons. (Hérité de JavaObject) |
| IJavaPeerable.SetPeerReference(JniObjectReference) |
Lit une valeur encodée JSON (RFC 4627) en tant que flux de jetons. (Hérité de JavaObject) |
| IJavaPeerable.UnregisterFromRuntime() |
Lit une valeur encodée JSON (RFC 4627) en tant que flux de jetons. |
Méthodes d’extension
| Nom | Description |
|---|---|
| GetJniTypeName(IJavaPeerable) |
Obtient le nom JNI du type de l’instance |
| JavaAs<TResult>(IJavaPeerable) |
Essayez de forcer |
| JavaCast<TResult>(IJavaObject) |
Effectue une conversion de type vérifiée par le runtime Android. |
| JavaCast<TResult>(IJavaObject) |
Lit une valeur encodée JSON (RFC 4627) en tant que flux de jetons. |
| TryJavaCast<TResult>(IJavaPeerable, TResult) |
Essayez de forcer |