0
votes

Comment gérer la réponse JSON de la liste d'objets ou un seul objet à l'aide de la modernisation?

J'appelle un service de repos (pas le mien) à l'aide de la modernisation qui renvoie une liste d'objets (s'il y en a plusieurs) ou un seul objet (le cas échéant). J'ai pu trouver un problème similaire ici mais la suggestion est de changer l'API que je n'ai pas de contrôle de. J'ai aussi lu ce thread qui semble être une bonne approche, mais existe-t-il un moyen de gérer cela en utilisant la modernisation?


1 commentaires

Peut-être que cela peut aider Stackoverflow.com/questions/53611583/... . Veuillez ajouter du code, au moins votre classe "objet"


3 Réponses :


0
votes

Vous pouvez obtenir les données de réponse API comme mapper en réponse, puis l'analyser en fonction de votre exigence directement. Comme vous pouvez vérifier ici si JSONELement est jsonarray

pour ex: xxx

JSONELement ref

Utilisation de gson pour obtenir Liste d'articles ou célibataire modèle


0 commentaires

0
votes

Comme l'auteur du deuxième poste que vous avez mentionné, je vous réfère également à la mise en œuvre de postarrayororysedesérializer décrit dans ce Réponse de la mienne .

Lorsque vous utilisez GSON avec REDOFIT (convertisseur de rénovation-gson), il vous suffit d'enregistrer l'adaptateur avec une instance personnalisée gson et de créer le rénovation instance avec cet instance gson , voir Exemple d'exemple Classe d'assistance: xxx

donc l'objet dans le dans le dans le Jsondesérializer nommé ObjectAryRayorSingleDesérializer Est-ce que vous devez rechercher une seule instance ou une matrice. Remplacer objet avec DTO correspondant et modifier désespéréalizer en conséquence.


1 commentaires

Merci. Aurait-il un extrait de code pour Jackson au lieu de GSON?



1
votes

Bien que la réponse de tirho semble être applicable, j'ai découvert une solution différente et simple qui a fonctionné pour moi. Espérons que cela peut aider les autres aussi bien.

    ObjectMapper mapper = new ObjectMapper();
    mapper.configure(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY, true);

    Retrofit retrofit = new Retrofit.Builder()
            .baseUrl(baseUrl)
            .addConverterFactory(JacksonConverterFactory.create(mapper))
            .client(okHttpClient)
            .build();


0 commentaires