1.简介
在默认情况下,ObjectMapper在序列化时,会将所有的字段序列化,无论这些字段是否有值
2.测试默认情况
/**
* 测试用户
*/
@ToString
@Accessors(chain = true)
public class TestUser {
@Setter
@Getter
private Integer id;
@Setter
@Getter
private String name;
@Setter
@Getter
private Integer age;
@Setter
@Getter
private Date createTime;
}
/**
* 测试入口
*/
public class TestJackson {
public static void main(String[] args) {
TestUser02 testUser021 = new TestUser02().setName("XXXX");
System.out.println("objectToJson >>>: " + JacksonUtil.object2Json(testUser021));
}
}
// 输出结果
// objectToJson >>>: {"id":null,"name":"XXXX","age":null,"createTime":null}
4.设置空值不序列化
方式一 ObjectMapper设置setSerializationInclusion(JsonInclude.Include.NON_NULL)
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
方式二 类设置注解@JsonInclude(value= JsonInclude.Include.NON_NULL)
@JsonInclude(value= JsonInclude.Include.NON_NULL)
public class TestUser {...}
方式三 字段设置注解@JsonInclude(value= JsonInclude.Include.NON_NULL)
public class TestUser {
@JsonInclude(value= JsonInclude.Include.NON_NULL)
private Integer id;
}
3.测试空值不序列化
/**
* 测试用户
*/
@ToString
@Accessors(chain = true)
@JsonInclude(value= JsonInclude.Include.NON_NULL)
public class TestUser {
@Setter
@Getter
private Integer id;
@Setter
@Getter
private String name;
@Setter
@Getter
private Integer age;
@Setter
@Getter
private Date createTime;
}
/**
* 测试入口
*/
public class TestJackson {
public static void main(String[] args) {
TestUser02 testUser021 = new TestUser02().setName("XXXX");
System.out.println("objectToJson >>>: " + JacksonUtil.object2Json(testUser021));
}
}
// 输出结果
// objectToJson >>>: {"name":"XXXX"}
5.附录 jackson工具类
/**
* jackson的工具类
*/
public class JacksonUtil {
private static final ObjectMapper objectMapper;
static {
objectMapper = new ObjectMapper()
// .setSerializationInclusion(JsonInclude.Include.NON_NULL)
;
}
/**
* json字符串 转成 java对象
*
* @param json json字符串
* @param cls java类型
* @return {@link T}
*/
public static <T> T json2Object(String json, Class<T> cls) {
T t = null;
try {
t = objectMapper.readValue(json, cls);
} catch (JsonProcessingException e) {
e.printStackTrace();
}
return t;
}
/**
* java对象 转成 json字符串
*
* @param obj java对象
* @return {@link String}
*/
public static String object2Json(Object obj) {
String json = null;
try {
json = objectMapper.writeValueAsString(obj);
} catch (JsonProcessingException e) {
e.printStackTrace();
}
return json;
}
}