Optimierung JaxRS/Jackson auszuschließen, null-Werte, leere Listen, arrays
Sind wir mit JaxRS & Jackson, Daten zu senden, zu unseren Kunden. Da das client-Javascript, die wir nicht wirklich brauchen, um zu senden, der null-Werte oder leere arrays, wenn es nicht einen gültigen Wert für diese Eigenschaft (die JaxRS standardmäßig tut). Gibt es eine Möglichkeit, um dieses?
Beispiel. JaxRS sendet diese:
{"prop1":[],"prop2":null,"prop3":"foo"}
wo wir bekommen haben, Weg mit
{"prop3":"foo"}
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gibt es mehrere Möglichkeiten, um dies zu erreichen, je nachdem; - Anmerkung
@JsonSerialize(include=JsonSerialize.Inclusion.NON_NULL)
ist eine Möglichkeit. Oder, da Sie auch wollen, um die drop-leere Listen, arrays ändern NON_NULL zu NON_EMPTY.Ist es auch möglich, konfigurieren Sie dieses als Standard-Verhalten; in Jackson 1.9:
und in Jackson 2.0, etwas einfacher:
Zunächst fallen die Eigenschaften von deinem JSON könnte zu Fehlern führen oder unklar-code auf der client-Seite der client-Seite ist zu prüfen, ob eine bestimmte Eigenschaft vorhanden ist, bevor Sie es, wenn die Eigenschaft nicht vorhanden ist würde werden JavaScript-Fehler gemeldet. Langweiliges Zeug.
Da die HTTP-Kommunikation ist gzipped, die potenziellen Gewinne aus der Entfernung Eigenschaften nicht erheblich erscheinen (ich kann falsch sein, offensichtlich - ich weiß nicht, Ihre Anwendung). GET-Anforderung kann effektiv zwischengespeichert, also ein Grund mehr, um zu vermeiden, dass solche Optimalisierung.
Können Sie anpassen der Serialisierung von Java-Objekten in JSON wie Sie benötigen. Siehe diese Frage Wie passe ich die Serialisierung einer Liste der JAXB-Objekte nach JSON? für weitere Erklärung, wie dies zu tun.