2015-05-17 20 views
5

Sto usando il dropwizard per creare l'API REST. Ma non capisco, come posso configurare Jackson per escludere alcune classi dalle funzioni WRAP_ROOT_VALUE/UNWRAP_ROOT_VALUE? In questo momento ho una richiesta POST con il corpo JSON che non include radice nome dell'elemento:Usa l'elemento radice Json solo per alcune classi

{ 
    "identification": "dummyuser", 
    "password":"dummypass" 
} 

Questo dovrebbe mappare classe java LoginRequest:

public class LoginRequest { 
    public String identidication; 
    public String passwrd; 
} 

Ho anche le richieste di alcuni tipi che includono radice nome dell'elemento:

{ 
    "user":{ 
     "id":12345, 
     "name":"John Doe" 
    } 
} 

Questo dovrebbe essere mappato:

@JsonRootName("user") 
public class User { 
    ... 
} 

Per ottenere elemento principale di lavoro ho dovuto includere:

environment.getObjectMapper().configure(SerializationFeature.WRAP_ROOT_VALUE, true); 
environment.getObjectMapper().configure(DeserializationFeature.UNWRAP_ROOT_VALUE, true); 

ma ora vale per tutte le classi. Ciò significa che ogni volta che la richiesta di accesso arriva, il server genera un errore perché si aspetta di vedere il nome dell'elemento radice.

+0

Sei riuscito a risolvere questo? –

risposta

0

Usa JsonTypeName con JsonTypeInfo invece di JsonRootName:

@JsonTypeName("user") 
@JsonTypeInfo(include= JsonTypeInfo.As.WRAPPER_OBJECT,use= JsonTypeInfo.Id.NAME) 
public class User { 
    ... 
} 

@JsonTypeName

annotazione usato per legare nome logico che la classe annotata ha. Utilizzato con JsonTypeInfo (e in particolare con la proprietà JsonTypeInfo.use()) per stabilire una relazione tra tipi e tipi di testo.

@JsonTypeInfo

annotazione usato per configurare i dettagli di se e come le informazioni sul tipo viene utilizzato con JSON serializzazione e deserializzazione, per conservare informazioni sulla classe reale di istanze di oggetti. Questo è necessariamente per i tipi polimorfici e potrebbe anche essere necessario per collegare tipi dichiarati astratti e per abbinare l'implementazione concreta.

Problemi correlati