2016-07-15 16 views
0

Ich habe ein eigenartiges Problem in meinem Projekt. Ich habe einen REST-Endpunkt von einem mvn-Archetyp basierend auf Jersey + Grizzly2 + Moxy gebootet. Dieser Endpunkt gibt ein Set aller POJOs in der DataSource zurück. Also, was passiert, ist, dass, wenn ich den Endpunkt @GET es diese gibt:Convert Set von POJOs zu JSON gibt nur "ID" Felder zurück

[{"id":1},{"id":0}] 

für 2 Objekte in der Datasource. Wenn ich diese Objekte println ich:

[[1 username1 fullName1 ROLE_USR], [0 username2 fullName2 ROLE_USR]] 

Was ist hier das Problem? Warum werden nicht alle Felder serialisiert, sondern nur das Feld id?

EDIT 1: meine POJO Definition hinzu:

public class User { 

    private int id; 
    private final String emailAddress; 
    private final String username; 
    private String password; 
    private String displayName; 
    private String description; 
    private USER_ROLE role; 

    // Constructors, setters & getters 

    @Override 
    public String toString() { 
     return "[" + id + " " + 
       username + " " + 
       displayName + " " + 
       role + "]"; 
    } 
} 
+0

bitte teilen pojo Klasse auch –

+0

zur ursprünglichen Frage hinzugefügt .. Nun, dass ich daran denke - vielleicht liegt es daran, weil die Felder privat sind? Könnte das der Fall sein? Aber wie kann es "id" herausziehen, wenn es auch privat ist? – Alex

Antwort

0

Problem behoben, durch zurück zu Jackson wechseln. Scheint, dass MOXy seinen Job als empfohlene JSON-Bibliothek nicht erfüllt. Ersetzen

<dependency> 
    <groupId>org.glassfish.jersey.media</groupId> 
    <artifactId>jersey-media-moxy</artifactId> 
    <version>${jersey.version}</version> 
</dependency> 

mit

<dependency> 
    <groupId>org.glassfish.jersey.media</groupId> 
    <artifactId>jersey-media-json-jackson</artifactId> 
    <version>${jersey.version}</version> 
</dependency> 

haben Werte der Trick und jetzt ist mein Endpunkt zurückkehrt erwartet.