将POJO集转换为JSON仅返回“id”字段

时间:2016-07-15 09:09:43

标签: java json jersey-2.0 moxy

我的项目中有一个奇怪的问题。我基于Jersey + Grizzly2 + Moxy从mvn原型中引导了一个REST端点。 此端点返回DataSource中所有POJO的 Set 。那么当我 @GET 端点时它会返回:

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

表示DataSource中的2个对象。如果我 println 这些对象我得到:

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

这是什么交易?为什么不序列化所有字段,但仅显示 id 字段?

编辑1: 添加我的POJO定义:

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 + "]";
    }
}

1 个答案:

答案 0 :(得分:0)

通过切换回杰克逊来解决问题。似乎MOXy没有履行它作为推荐的JSON库的工作。替换

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

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

完成了这个技巧,现在我的端点返回了预期值。