我有一个类,我想序列化忽略一些属性
public class User extends Model { static class publicView{} @JsonView(publicView.class) private Long id; private String showName; @JsonView(publicView.class) private ListcallableQueues; }
当我在没有JsonView的情况下进行序列化时,我通常会做这样的事情
public JsonNode jsonSerialization() { ObjectMapper mapper = new ObjectMapper(); return mapper.convertValue(this, JsonNode.class); }
如何使用"publicView"类进行序列化?
您可以配置对象映射器以包括publicView.class
和排除其他字段,如下所示:
禁用MapperFeature.DEFAULT_VIEW_INCLUSION
映射器功能.
通过该ObjectMapper#getSerializationConfig().withView()
方法启用序列化视图.
请参阅此页面以供参考.
这是一个例子:
public class JacksonView1 { public static class publicView{} public static class User { public User(Long id, String showName, List<String> callableQueues) { this.id = id; this.showName = showName; this.callableQueues = callableQueues; } @JsonView(publicView.class) public final Long id; public final String showName; @JsonView(publicView.class) public final List<String> callableQueues; } public static void main(String[] args) { User user = new User(123l, "name", Arrays.asList("a", "b")); ObjectMapper mapper = new ObjectMapper(); mapper.disable(MapperFeature.DEFAULT_VIEW_INCLUSION); mapper.setConfig(mapper.getSerializationConfig() .withView(publicView.class)); System.out.println(mapper.convertValue(user, JsonNode.class)); } }
输出:
{"id":123,"callableQueues":["a","b"]}