0
votes

Gérer la réponse JSON qui vient sans «racine» avec un élément repose

J'invoque un service Web (construit dans Ruby) et obtenez une réponse JSON comme ceci: xxx pré>

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"
    }       
}


0 commentaires

3 Réponses :


0
votes

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)


3 commentaires

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



0
votes

Pour moi, cet extrait résout le problème: xxx


0 commentaires

1
votes

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é>

  1. changer le nom de la DTO à quelque chose externalServiceSesponse code> li>
  2. 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é>
    1. 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;
          }
      
      }
      


0 commentaires