Jackson 序列化 如何让为NULL的属性不参与序列化

[code="java"]
public class User {

private int id;

private String name;

private Date date;

}

User u = new User();
u.setId(1);
u.setName("张三");
u.setDate(new Date());

//结果{"id":1,"name":"张三","date":"2013-03-19"}

//如果u.setDate(null); 我不想让他参与序列化
// 我想返回{"id":1,"name":"张三"} 默认情况是{"id":1,"name":"张三","date":null}
[/code]

Jackson

很简单。首先请确认你是Jackson是什么版本2.x以上即可

好了下面是代码
[code="java"]
public class JSonWirteTest {
public static void main(String[] args) {

    User user = new User();
    ObjectMapper mapper = new ObjectMapper();

    try {
        mapper.setSerializationInclusion(Include.NON_NULL);
        user.setAge(10);
        user.setMessages(new ArrayList<String>());
        user.setName(null);
        mapper.writeValue(new File("user.json"), user);

    } catch (JsonGenerationException e) {

        e.printStackTrace();

    } catch (JsonMappingException e) {

        e.printStackTrace();

    } catch (IOException e) {

        e.printStackTrace();

    }

}

}
[/code]

结果:
{"age":10,"messages":[]}