jackson
基础功能
将字符串反序列化成对象
示例1,
ObjectMapper mapper = new ObjectMapper();
String str="{\"name\":\"张三\"}";
try {
Map mv=mapper.readValue(str, Map.class);
log.info(String.valueOf(mv.get("name")));
} catch (Exception e) {
e.printStackTrace();
}
示例2,
ObjectMapper mapper = new ObjectMapper();
try {
Student s=mapper.readValue("{\"name\":\"aaaa\",\"old\":\"30\"}", Student.class);
log.info(s.getName()+"-"+s.getOld());
} catch (Exception e) {
e.printStackTrace();
}
将对象序列化成json字符串
ObjectMapper mapper = new ObjectMapper();
Student s1=new Student();
s1.setName("zhangsan");
s1.setOld("30");
try {
String str=mapper.writeValueAsString(s1);
log.info(str);
} catch (Exception e) {
e.printStackTrace();
}
忽略属性序列化
public class Student implements Serializable {
@JsonIgnore
private String name;
private String old;
private List list=new ArrayList();
}
提取json字符串中的某一个faield
public static String getJsonNodeAsText(String jsonKey,String content){
JsonNode jsoNode=null;
try {
jsoNode=mapper.readTree(content);
return jsoNode.get(jsonKey).asText();
} catch (Exception e) {
log.error(null,e);
}finally{
jsoNode=null;
}
return null;
}
jackson 实体转json为NULL或者为空不参加序列化
加在class
@JsonInclude(Include.NON_NULL)
//将该标记放在属性上,如果该属性为NULL则不参与序列化
//如果放在类上边,那对这个类的全部属性起作用
//Include.Include.ALWAYS 默认
//Include.NON_DEFAULT 属性为默认值不序列化
//Include.NON_EMPTY 属性为 空(“”) 或者为 NULL 都不序列化
//Include.NON_NULL 属性为NULL 不序列化
加在代码里
ObjectMapper mapper = new ObjectMapper();
mapper.setSerializationInclusion(Include.NON_NULL);
//通过该方法对mapper对象进行设置,所有序列化的对象都将按改规则进行系列化
//Include.Include.ALWAYS 默认
//Include.NON_DEFAULT 属性为默认值不序列化
//Include.NON_EMPTY 属性为 空(“”) 或者为 NULL 都不序列化
//Include.NON_NULL 属性为NULL 不序列化
常用注解
==手机QQ扫描下方二维码,快速加入Java架构师交流群==