2013-07-04 6 views
5

Nella configurazione corrente utilizzo Jersey 2.0 con MOXy come descritto in jersey docs. Mi affido completamente alle "Funzioni rilevabili automaticamente" di , quindi non uso alcuna configurazione aggiuntiva o annotazione JAXB.Moxy, JSON e Jersey 2.0 non deserializzano l'array di stringhe semplici

Il mio compito è deserializzare un array di stringhe sul lato server. Il client invia il messaggio JSON:

["foo","bar"] 

E sul lato server la seguente intestazione metodo dovrebbe deserializzare esso:

@POST 
@Path("/stringArray") 
@Produces(MediaType.APPLICATION_JSON) 
@Consumes(MediaType.APPLICATION_JSON) 
public Response stringArray(List<String> stringList) { 
    ... 
} 

Problema: Il contenuto di stringList è {null, null} , quindi la quantità di elementi è sempre corretta, ma le stringhe sono impostate su null.

Lo stesso con una piccola classe wrapper funziona. Qui la classe:

public static class Data { 
    public List<String> stringList; 
} 

Modifica firma Methode a StringArray (dati Dati) e cambiare il messaggio JSON a:

{"stringList": ["foo","bar"]} 

Qual è la differenza tra i due approcci e come posso ottenere la stringa di pianura array funzionante?

Aggiornamento: Il problema descritto è risolto dalla risposta di @ Blaise. Ma il problema strettamente correlato di serializzare un elenco di POJO non funziona ancora. Messaggio:

[org.glassfish.jersey.message.internal.MessageBodyProviderNotFoundException: MessageBodyWriter non trovato per il tipo di supporto = application/json, type = classe java.util.ArrayList, genericType = classe java.util .ArrayList]

l'unica soluzione che ho trovato è di nuovo con una piccola classe wrapper che contiene l'elenco ...

+0

In generale sembra essere difficile da serializzare/deserializzare Collezioni esempio Elenca senza includerli in una classe. Qualcuno può confermarlo? – adler

+0

Problemi risolti utilizzando org.eclipse.persistence.core_2.5.1.v20130706-f712d02.jar e org.eclipse.persistence.moxy_2.5.1.v20130706-f712d02.jar invece delle versioni 2.5.0. Grazie a @ Blaise – adler

risposta