Java Json序列化与JsonView
我有一个要序列化的类,忽略了一些属性Java Json序列化与JsonView,java,json,serialization,jackson,Java,Json,Serialization,Jackson,我有一个要序列化的类,忽略了一些属性 public class User extends Model { static class publicView{} @JsonView(publicView.class) private Long id; private String showName; @JsonView(publicView.class) private List<qQueue> callableQueues; }
public class User extends Model
{
static class publicView{}
@JsonView(publicView.class)
private Long id;
private String showName;
@JsonView(publicView.class)
private List<qQueue> callableQueues;
}
如何使用“publicView”类进行序列化?您可以将对象映射器配置为包含您的
publicView.class
并排除其他字段,如下所示:
- 禁用
mapper功能MapperFeature.DEFAULT\u VIEW\u 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));
}
}
多亏了阿列克西·加夫里洛夫,我找到了一个解决方案,它可能不是最合适的,但很有效
public JsonNode jsonSerialization()
{
ObjectMapper mapper = new ObjectMapper();
try
{
mapper.disable(MapperFeature.DEFAULT_VIEW_INCLUSION);
return Json.parse(mapper.writerWithView(publicView.class).writeValueAsString(this));
}
catch (JsonProcessingException ex)
{
return null;
}
}
我找不到setConfig方法,可能此方法已更改?是的,此方法已添加到版本2.0中。对于1.X,还有其他方法。请参阅此页面:我不需要让行
mapper.disable(MapperFeature.DEFAULT\u VIEW\u INCLUSION)代码>。它与mapper.setConfig(mapper.getSerializationConfig().withView(publicView.class))配合得非常好代码>
{"id":123,"callableQueues":["a","b"]}
public JsonNode jsonSerialization()
{
ObjectMapper mapper = new ObjectMapper();
try
{
mapper.disable(MapperFeature.DEFAULT_VIEW_INCLUSION);
return Json.parse(mapper.writerWithView(publicView.class).writeValueAsString(this));
}
catch (JsonProcessingException ex)
{
return null;
}
}