Maison > Java > javaDidacticiel > Pourquoi GSON lance-t-il « BEGIN_OBJECT attendu mais était BEGIN_ARRAY » lors de l'analyse de JSON ?

Pourquoi GSON lance-t-il « BEGIN_OBJECT attendu mais était BEGIN_ARRAY » lors de l'analyse de JSON ?

Barbara Streisand
Libérer: 2024-12-21 16:38:10
original
301 Les gens l'ont consulté

Why Does GSON Throw

GSON lance "BEGIN_OBJECT attendu mais était BEGIN_ARRAY" ?

Lorsque vous essayez d'analyser une chaîne JSON dans une liste d'objets à l'aide de GSON, vous peut rencontrer l'erreur "BEGIN_OBJECT attendu mais était BEGIN_ARRAY". Cela se produit lorsque les données JSON fournies sont un tableau, alors que vous attendez un objet.

Pour résoudre ce problème, vous devez ajuster votre code d'analyse pour s'adapter à la structure du tableau. Voici une ventilation du problème et la solution appropriée :

Problème :

Les données JSON fournies sont un tableau d'objets plutôt qu'un seul objet. Cependant, votre code tente de l'analyser comme un objet unique, ce qui entraîne l'erreur.

Solution :

Pour le corriger, vous devez spécifier que le JSON représente un tableau d'objets. Cela peut être fait en modifiant votre code pour analyser le JSON dans un tableau de votre classe d'objet :

ChannelSearchEnum[] enums = gson.fromJson(jstring, ChannelSearchEnum[].class);
Copier après la connexion

De cette façon, GSON analysera correctement le JSON comme un tableau d'objets ChannelSearchEnum.

Solution alternative :

Pour plus de flexibilité, vous pouvez utiliser la classe TypeToken pour définir un paramètre tapez la collection dans laquelle vous souhaitez analyser, comme indiqué ci-dessous :

Type collectionType = new TypeToken<Collection<ChannelSearchEnum>>() {}.getType();
Collection<ChannelSearchEnum> enums = gson.fromJson(jstring, collectionType);
Copier après la connexion

Cette approche vous permet d'analyser le JSON dans une collection d'objets ChannelSearchEnum, qui peut être une liste, un ensemble ou toute autre collection. tapez.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal