Ich benutze JAX-RS, um erholsame Webservices in Java zu erstellen. Ich komme zu viel Overhead in dem produzierten JSON.JAX-RS, Zuordnung von <String, String> zu JSON ohne Overhead?
Datenklasse:
@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class Test {
private Map<String,String> data;
Test() {}
public Test(Map<String,String> data) {
this.data = data;
}
public Map<String, String> getData() {
return data;
}
}
Service:
@GET
@Path("/test")
@Produces("application/json; charset=UTF-8;")
public Test test() {
Map<String,String> map = new HashMap<String,String>();
map.put("foo", "bar");
map.put("bingo", "bongo");
return new Test(map);
}
Produziert:
{"data":{"entry":[{"key":"foo","value":"bar"},{"key":"bingo","value":"bongo"}]}}
Ich würde es gerne produzieren:
{"data":{"foo":"bar","bingo":"bongo"}}
Was ist der einfachste Weg dies zu erreichen? Ich bin frei, meine Datenklasse zu ändern, aber ich kann nicht im Voraus die Schlüssel oder die Größe der Karte wissen.
Angesichts der Overhead der Web-Anfrage, sind Sie sicher, das JSON-Format ist es wert, zu optimieren? (Mit anderen Worten, führte das Profiling Ihrer Anwendung zu der Annahme, dass das Format der JSON-Daten ein Leistungsproblem war?) Denken Sie daran ... Vorzeitige Optimierung ist die Wurzel allen Übels in der Programmierung –