`
FirstBlood
  • 浏览: 162555 次
  • 性别: Icon_minigender_1
  • 来自: 沈阳
社区版块
存档分类
最新评论

jackson2.1.4 序列化对象时,为NULL的属性不序列化

阅读更多
下载地址 http://jackson.codehaus.org/

public class User {

	public User() {
	}
	
	public User(int id, String name, Date birthday) {
		super();
		this.id = id;
		this.name = name;
		this.birthday = birthday;
	}

	private int id;
	
	private String name;
	
	private Date birthday;

	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}
        //将该标记放在属性上,如果该属性为NULL则不参与序列化
        //如果放在类上边,那对这个类的全部属性起作用
		//Include.Include.ALWAYS 默认
		//Include.NON_DEFAULT 属性为默认值不序列化
		//Include.NON_EMPTY 属性为 空(“”)  或者为 NULL 都不序列化
		//Include.NON_NULL 属性为NULL 不序列化
	@JsonInclude(Include.NON_NULL)
	public Date getBirthday() {
		return birthday;
	}

	public void setBirthday(Date birthday) {
		this.birthday = birthday;
	}
	
}



//测试方法
ObjectMapper mapper = new ObjectMapper();
User user = new User(1,"jack",null);
String outJson = mapper.writeValueAsString(user);
System.out.println(outJson);
//测试结果
//{"id":1,"name":"jack"}


		ObjectMapper mapper = new ObjectMapper();
		//通过该方法对mapper对象进行设置,所有序列化的对象都将按改规则进行系列化
		//Include.Include.ALWAYS 默认
		//Include.NON_DEFAULT 属性为默认值不序列化
		//Include.NON_EMPTY 属性为 空(“”)  或者为 NULL 都不序列化
		//Include.NON_NULL 属性为NULL 不序列化
		mapper.setSerializationInclusion(Include.NON_NULL);
		User user = new User(1,"",null);
		String outJson = mapper.writeValueAsString(user);
		System.out.println(outJson);



以前的版本objectMapper.configure(SerializationConfig.WRITE_NULL_PROPERTIES,FALSE)这种方式实现
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics