无法序列化ReflectionDBObject(partialObject)

时间:2015-04-02 13:42:10

标签: java json mongodb rest jackson

我在Java中构建一个REST服务,它将数据集列表作为JSON数组返回,我使用ObjectMapper(杰克逊)在发回响应之前序列化列表。实体Dataset是一个扩展ReflectionDBObject的类。 这是一些代码:

数据集:

public class Dataset extends ReflectionDBObject {
    private String name;
    private String description;
    // other fields

    // constructor
    // getters&setters
}

REST:

public Response getDatasetsList() {
    List<Dataset> datasetsList;
    String jsonMsg;

    datasetsList = INSTANCE.getDatasetService().getDatasetsList();
    jsonMsg = INSTANCE.getObjectMapper().writeValueAsString(datasetsList);

    return Response.ok(jsonMsg, MediaType.APPLICATION_JSON).build();
}

INSTANCE是我的单身人士。

我得到的是以下内容:

[
    {
        "_id": "551bdebb516a8100a5316125",
        "name": "a name",
        "description": "a description",
        "partialObject": false
    },
    {
        "_id": "551be03c516aedc9f999e6ff",
        "name": "metadata test name",
        "description": "metadata test description",
        "partialObject": false
    }
]

有没有办法配置Jackson删除(或只是跳过)字段partialObjectThis question提供了类似的问题,但答案并非我真正想要的。

感谢。

1 个答案:

答案 0 :(得分:0)

如果它在子类中,则应该可以在基类中添加@JsonIgnoredProperties注释来定义要忽略的字段,例如:

@JsonIgnoreProperties({ "partialObject" })
public class Dataset extends ReflectionDBObject { ... }

除非被子类覆盖,否则会丢弃属性。