Anpassen der JSON-Serialisierung mit JaxRS
In einem webservice-Aufruf, ich möchte zurück, meine Objekte mit dieser JSON-Struktur.
{
"date" : "30/06/2014",
"price" : {
"val" : "12.50",
"curr" : "EUR"
}
}
Möchte ich anzeigen dieses JSON-code, um die Java-Struktur (mit joda-time und joda-Geld):
public class MyResponse {
LocalDate date;
Money price;
}
Meine webservice-aktuell sieht so aus:
@javax.ws.rs.POST
@javax.ws.rs.Path("test")
@javax.ws.rs.Produces({MediaType.APPLICATION_JSON})
@javax.ws.rs.Consumes({MediaType.APPLICATION_JSON})
public MyResponse test(MyRequest request) {
MyResponse response = new MyResponse();
response.setDate(LocalDate.now());
response.setMoney(Money.parse("EUR 12.50"));
return response;
}
Also meine Frage ist: wo registriere ich einen benutzerdefinierten handler-format stammt, wie ich will, sowie Geld zusagen?
- Ich glaube, dein Jax-RS Implementierung verwendet einige Bibliotheken für die Handhabung von JSON. Zum Beispiel Spring verwendet
Jackson
für diese Zwecke und in der Regel, wenn Sie brauchen eine benutzerdefinierte Serialisierung müssen nur konfigurieren Serialisierung Verhalten mitJackson
APIs - Der Rahmen scheint
org.jboss.resteasy:jaxrs-api:jar:2.1.0.GA:provided
. Es ist vorgesehen, ich denke, es nutzt die standard-JBoss 6 JSon serializer, aber ich kann nicht finden, welcher das ist.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie Jackson (das sollte der Standard für JBoss EAP 6) Sie können mithilfe von benutzerdefinierten JsonSerializers
Für die
LocalDate
:Für die
Money
:Beide Serialisierungsprogramme registriert werden können, weltweit:
Zum Parsen von JSON in das benutzerdefinierte format, das Sie brauchen, zu implementieren benutzerdefinierter JsonDeserializers.
Wenn Sie Jettison Sie können das gleiche tun mit benutzerdefinierten XmlAdapters.