11

我正在尝试使用 Jackson 将 java 对象转换为 Tomcat/jersey 中的 JSON 对象。并希望动态抑制某些属性的序列化(写入)。

我可以使用 JsonIgnore,但我想在运行时做出忽略决定。有任何想法吗??

因此,作为下面的示例,当我将 User 对象序列化为 JSON 时,我想抑制“id”字段。

new ObjectMapper.writeValueAsString(user);


class User {

private String id = null;
private String firstName = null;
private String lastName = null;

//getters
//setters

}//end class
4

4 回答 4

4

是的,JSON 视图是要走的路。

如果您需要让客户端决定封送哪些字段,此示例可能会有所帮助:http ://svn.codehaus.org/jackson/tags/1.6/1.6.3/src/sample/CustomSerializationView.java

于 2010-12-12T14:09:39.077 回答
2

查看

ObjectMapper.configure(SerialiationJson.Feature f, boolean value)

org.codehaus.jackson.annotate.JsonIgnore 

注解

这仅在您希望某种类型的所有实例在序列化时忽略 id 时才有效。如果你真的想要动态的(也就是每个实例定制),你可能不得不自己破解杰克逊库。

于 2010-06-05T18:14:10.110 回答
0

您是否尝试过使用JSON 视图?视图允许基于注释的机制来定义不同的配置文件,因此如果您只需要为不同的用户提供稍微不同的视图,这可能适合您。

于 2010-06-14T22:26:01.013 回答
0

我看不出有什么办法。如果您需要动态决定编组哪些属性,那么我建议您手动构造Map对象值的键,然后将其传递Map给 Jackson,而不是User直接传递对象。

于 2010-06-05T17:52:16.597 回答