4 Stimmen

Jersey JSON-Marshalling von leeren Listen

Wir haben eine Java-Liste von Objekten, die über JSON, das von Jersey erstellt wird, transportiert wird.

Die Liste wird "Zeilen" genannt. Wenn es Daten gibt, haben wir:

{"records":"1","page":"1","total":"1","rows":[{"id":"692334","cell":["ECS","D","201009","","0","ABCD","11","11","","201009"]}]}

Wenn es keine Daten gibt, haben wir:

{"page":0,"records":0,"total":0}

Wie können wir Jersey dazu bringen, die rows auch wenn die Liste eine Größe von 0 hat? Was wir wollen, ist:

{"page":0,"records":0,"total":0,"rows":[]}

Beachten Sie, dass wir bereits einen JAXB ContextResolver verwenden, um sicherstellen das JSON ist für eine einzelne Zeile korrekt. Ich bin nicht sicher, ob wir diesen Resolver konfigurieren können, um unser Problem zu lösen.

5voto

StaxMan Punkte 107669

Verwenden Sie den Jackson JAX-RS-Anbieter anstelle der Alternativen (badgerfish/jettison), die keine XML-zu-JSON-Konvertierung durchführen. Das fehlende Array ist höchstwahrscheinlich auf diese Konvertierung zurückzuführen. Es gibt mehrere Möglichkeiten, dies zu konfigurieren (Jersey-Mailingliste sollte einige haben), und die neuesten Versionen können es direkt über Jersey-API offenlegen.

0voto

Matthias B Punkte 5355

Vielleicht hilft Ihnen das weiter: http://jersey.java.net/nonav/documentation/latest/json.html#d4e903

Es scheint, dass einige Array-Probleme mit dieser Methode gelöst werden können:

JSONConfiguration.mapped().arrays("yourArrayName").build()

Zumindest löst es das Problem, wenn die Liste nur 1 Element enthält es ist auch als JSON-Array formatiert.

0voto

Whome Punkte 9949

Ich habe es geschafft, JSON Array "Bug" in Jersey json Bibliothek zu lösen. Die geheime Zutat ist die zuvor erwähnte JSONConfiguration und ContextResolver Magie. Siehe meine folgenden Beitrag hat es eine vollständige Code-Beispiel, angepasst ContextResolver und Rest Application-Klasse könnte etwas unscharfe Logik auf den ersten Blick sein.

Wie man Java-Primitive mit Jersey REST serialisiert

  • json-Array für Java-Listen mit null oder einem Element
  • primitive ganzzahlige oder boolesche Felder ohne Anführungszeichen

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X