com.fasterxml.jackson.databind.JsonMappingException: Aucun contenu à la carte grâce à la fin de l'entrée
J'ai besoin de la carte d'un tableau JSON objet avec java classe POJO.
J'ai écrit le code comme ceci:
//execute the client with get method
InputStream inputStream = getMethod.getResponseBodyAsStream();
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
ObjectMapper objectMapper = new ObjectMapper();
JsonFactory jsonFactory = new JsonFactory();
List<OwnerDetail> owners = new ArrayList<>();
JsonParser jsonParser = jsonFactory.createJsonParser(inputStream);
if (jsonParser.nextToken() != null && jsonParser.)
{ //end-of-input
owners = objectMapper.readValue(bufferedReader, TypeFactory.defaultInstance().constructCollectionType(List.class, OwnerDetail.class));
}
Le bloc ci-dessus me donne l'erreur suivante:
com.fasterxml.jackson.databind.JsonMappingException: No content to map due to end-of-input
at [Source: java.io.BufferedReader@5e66c5fc; line: 1, column: 1]
at com.fasterxml.jackson.databind.JsonMappingException.from(JsonMappingException.java:164)
at com.fasterxml.jackson.databind.ObjectMapper._initForReading(ObjectMapper.java:3029)
at com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:2971)
at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:2128)
Toute aide serait appréciée. Merci.
Vous devez vous connecter pour publier un commentaire.
Après la lecture de la réponse les données de la réponse est consommé.
Si votre code est en interceptor vous pouvez essayer de la création de réponse à nouveau et retourner comme ci-dessous:
Ici, la réponse est créé de nouveau et s'en retourna.
Laissez-moi savoir les mettre à jour.
L'utilisation des deux inputStream et bufferedReader semble erroné. Si vous avez fait une JsonParser pour l'entrée, il est probablement préférable de continuer à l'utiliser pour le mappage d'objets. Il pourrait y avoir un problème avec le tampon lecteur avec impatience de lire tout le contenu du flux, ne laissant rien pour le JSON analyseur de lire.
Il y a également l'air d'être une section manquante à partir de votre code, dans le
if
condition.Quelque chose comme ceci:
Notes supplémentaires:
else
pour définir la valeur par défaut uniquement lorsque cela est nécessaireJe suppose que vous devriez utiliser
OutputStreamWriter
pour désérialiser votre réponse.OutputStreamWriter wr = new OutputStreamWriter(con.getOutputStream());
wr.write(auth.toString());
wr.flush();