Nie ma JSONObject
w api Jackson. Zamiast zwracania wartości JSONObject
można zwrócić mapę lub komponent bean Java z właściwością komunikatu, która ma dla niej wartości pobierające i ustawiające.
public class MyMessage {
private String message;
public void setMessage(final String message) {
this.message = message;
}
public String getMessage() {
return this.message;
}
}
Więc metoda zostanie zmniejszona do:
private MyMessage(String message) {
MyMessage myMessage = new MyMessage();
myMessage.setMessage(message);
return myMessage;
}
Innym aspektem tej zmiany będą zmiany kodu serializacji, konwertować MyMessage powrotem do json ciąg. Jackson robi Java Beans, mapy domyślnie, nie trzeba utworzyć JSONObject
np
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);
}
Powyższy powróci {message: "some message"}
I odpuściliśmy wyjątki dla zwięzłości.
Więc 'jacksonObj' będzie moim obiektem zwrotu? – kasavbere
Z wszystkimi podpowiedziami dotyczącymi jacksona miałem nadzieję, że org.codehaus.jackson będzie prostsze niż org.json. Up-głosuj za pomoc. – kasavbere
@kasavbere: Edytowałem swoją odpowiedź, aby lepiej odzwierciedlić pierwotne pytanie. Jeśli chodzi o prostotę, nie jest to takie proste, ale zależy to od tego, co chcesz z nim zrobić. Dla uproszczenia serializacji prostsze jest użycie 'org.json'.Jednakże, jeśli wykonujesz duże serializacje obiektów i masz jakieś niestandardowe potrzeby (na przykład serializujesz pole 'Date' jako wartość' String'), Jackson jest zdecydowanie najlepszą opcją, imho. –