Question

Je suis en train d'utiliser Jackson pour convertir des données JSON en objets Java, une liste d'objets pour être précis, mais je reçois cette erreur:

org.codehaus.jackson.map.JsonMappingException: Ne peut pas deserialize instance de entitylayer.Detail jeton sur START_ARRAY

est le code:

 ObjectMapper mapper = new ObjectMapper(); 
 List<Detail> lcd = (List<Detail>) mapper.readValue(ld, Detail.class);

ld est la liste au format JSON, c'est la partie qui me fait comfused dans le jackson tutoriel . qu'est-ce que nouveau fichier ( "user.json") représentent? Je suppose que la chaîne était au format JSON je voulais convertir, c'est pourquoi je ld .

J'espère que vous pouvez me aider avec elle

Était-ce utile?

La solution

Dans le didacticiel lié (autres collections fonctionnent de la même façon):

  

Donc, si vous voulez des données se lient dans une carte vous devez utiliser:

Map<String,User> result = mapper.readValue(src, new TypeReference<Map<String,User>>() { });
     

où typereference est seulement nécessaire de passer définition de type générique (par classe interne anynomous dans ce cas): la partie importante est> qui définit le type de liaison à

.      

Si vous ne le faites pas (et juste passer Map.class), appel est équivalent à la liaison à la carte (à savoir « typées » Carte), comme expliqué ci-dessus.

Edit:

Si vous insistez pour avoir été ingurgiter:

List<Detail> lcd = mapper.readValue(ld, new TypeReference<List<Detail>>() {});

Autres conseils

En tant que stratégie alternative, le traitement des tableaux est un peu plus pratique, car vous pouvez facilement spécifier le type. Vous pourriez peut encore aussi faire ceci:

Detail[] details = mapper.readValue(ld, Detail[].class);

Les tableaux sont souvent sous-utilisés, au moins lorsqu'ils traitent avec Jackson. Tant que vous ne devez pas modifier les résultats trop, ils sont très pratiques à utiliser, car les types sont bien contenues, sans avoir besoin de médicaments génériques d'utilisation (et comme résultat, type de sécurité est forte, il est non seulement fluff compilateur)

Vous pouvez également analyser le JSON vous et créer ce POJO que vous souhaitez créer. Je l'ai fait pour transformer JSON JAXB.

Reportez-vous à la section "streaming API Exemple" http://wiki.fasterxml.com/JacksonInFiveMinutes

Il est plus facile que vous attendez qu'il soit.

Chaque fois que vous obtenez cette erreur, vérifiez d'abord si la chaîne JSON vous essayez de convertir en une chaîne JSON appropriée. Si vous essayez de créer votre propre chaîne JSON pour tester votre code local, vous finissez à obtenir cette erreur.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top