J'invoque un service Web (construit dans Ruby) et obtenez une réponse JSON comme ceci: pour modéliser cet objet de réponse dans Java J'essaye avec: P>
{
"response":
{
"error_code": "02",
"message": "Param not valid",
"field_name": "title"
}
}
3 Réponses :
là où vous avez configuré JAXB (un fichier de propriétés ou une méthode de configuration), vous devez définir
Jaxbunmarshaller.setProperty (MotmarshallerProperties.json_include_root, false) code> p>
J'utilise reseasy. Quel est le nom du paquet de 'MemarshallerPerties'? Merci!
org.eclipse.persistence.jaxb.unmarshallerProperties
Toute autre alternative appréciée tant que nous préférons éviter les bibliothèques de gluge pour l'instant
Pour moi, cet extrait résout le problème:
de l'extrait de code que vous avez posté
réponse de réponse = réponsews.readentity (réponse.class); p> BlockQuote>
Je recommanderais d'utiliser un autre nom pour votre objet d'entité.
Réponse CODE> La classe est également utilisé par JAXRS Framework lui-même. P>
Je suppose que vous utilisez
reseasyClient code> pour appeler ce service (externe) pour recevoir JSON. S'il est entendu que la réponse de ce service est en Json, vous pouvez utiliser JSON (Jackson) Marshaller / Unmarshaller au lieu de Jaxb. En supposant que vous ayez déjà une dépendance «resease-client» disponible sur votre parcours de classe. La forme maven de cette dépendance ressemble à: p>
xxx pré>
- changer le nom de la DTO à quelque chose
externalServiceSesponse code> li>
- Lors de l'exécution de
obtenez code> Demande Vous spécifiez explicitement le type de média de réponse LI> ol>
xxx pré>
- Enfin, je ne vois pas pourquoi vous devez spécifier
@xmlrootelement code> Annotation sur votre DTO LI> OL>
public class ExternalServiceResponse implements Serializeable { private String error_code; private String message; private String field_name; public String getError_code() { return error_code; } public void setError_code(String error_code) { this.error_code = error_code; } public String getMessage() { return message; } public void setMessage(String message) { this.message = message; } public String getField_name() { return field_name; } public void setField_name(String field_name) { this.field_name = field_name; } }