Non ci sono JSONObject
in Jackson api. Anziché restituire un valore JSONObject
, è possibile restituire una mappa o un bean Java con la proprietà message che contiene getter e setter.
public class MyMessage {
private String message;
public void setMessage(final String message) {
this.message = message;
}
public String getMessage() {
return this.message;
}
}
Così, il metodo sarà ridotto a:
private MyMessage(String message) {
MyMessage myMessage = new MyMessage();
myMessage.setMessage(message);
return myMessage;
}
Un altro aspetto di questo cambiamento sarebbe cambiare il codice di serializzazione, per convertire MyMessage tornare a stringa JSON. Jackson fa Java Beans, mappe per impostazione predefinita, non è necessario creare un JSONObject
esempio,
private String serializeMessage(MyMessage message){
//Note: you probably want to put it in a global converter and share the object mapper
ObjectMapper mapper = new ObjectMapper();
return mapper.writeValueAsString(message);
}
È possibile che questo tornerà {message: "some message"}
Ho saltato le eccezioni per brevità.
Quindi 'jacksonObj' sarebbe il mio oggetto di ritorno? – kasavbere
Con tutte le ipotesi su Jackson, speravo che org.codehaus.jackson sarebbe stato più semplice di org.json. Up-vote per il tuo aiuto. – kasavbere
@kasavbere: ho modificato la mia risposta per riflettere meglio la tua domanda originale. Per quanto riguarda la semplicità, non è molto semplice, ma dipende da cosa vuoi fare con esso. Per le serializzazioni più semplici, è più semplice usare 'org.json'.Tuttavia, se si stanno eseguendo serializzazioni di oggetti di grandi dimensioni e si hanno alcune esigenze personalizzate (ad esempio serializzare un campo 'Date' come valore' String'), Jackson è di gran lunga l'opzione migliore, imho. –