2015-04-02 68 views
0

我在Java中构建了一个REST服务,它返回一组数据集作为JSON数组,我使用ObjectMapper(Jackson)在发回响应之前序列化列表。实体Dataset是延伸ReflectionDBObject的类。 下面是一些代码:无法序列化ReflectionDBObject(partialObject)

数据集:

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 
    } 
] 

是否有配置杰克逊删除(或只是跳过)领域partialObject的方法吗? This question提供了类似的问题,但答案并不是我正在寻找的。

谢谢。

+0

您需要更多地显示对象以查看partialObject来自哪里。通常,您可以使用'@ JsonIgnore'作为属性;或者,如果您可以直接注释类型,则可以在类PartialObject本身上添加@ JsonIgnoreType。 – StaxMan 2015-04-02 17:18:07

+0

'partialObject'自动来自'ReflectionDBObject'的扩展,它不是'Dataset'的字段。 – Marco 2015-04-02 17:22:37

+0

尽管如此,需要定义来知道它来自哪里,所以显示这个类或类似的例子会很有用。但它听起来像只是一个简单的附加属性。 – StaxMan 2015-04-02 17:24:53

回答

0

如果是在一个子类,它应该是可以添加@JsonIgnoredProperties注释在基类定义字段,以忽略,如:

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

这会下降的特性,除非由子重写-类。