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 ...
In generale sembra essere difficile da serializzare/deserializzare Collezioni esempio Elenca > senza includerli in una classe. Qualcuno può confermarlo? – adler
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