packagecom.inspur.demo.json;importjava.io.IOException;importjava.text.SimpleDateFormat;importjava.util.ArrayList;importjava.util.Calendar;importjava.util.HashMap;importjava.util.List;importjava.util.Map;importcom.fasterxml.jackson.annotation.JsonInclude.Include;importcom.fasterxml.jackson.core.JsonGenerator;importcom.fasterxml.jackson.core.type.TypeReference;importcom.fasterxml.jackson.databind.BeanDescription;importcom.fasterxml.jackson.databind.JsonNode;importcom.fasterxml.jackson.databind.JsonSerializer;importcom.fasterxml.jackson.databind.ObjectMapper;importcom.fasterxml.jackson.databind.SerializationConfig;importcom.fasterxml.jackson.databind.SerializerProvider;importcom.fasterxml.jackson.databind.ser.BeanPropertyWriter;importcom.fasterxml.jackson.databind.ser.BeanSerializerModifier;/*** Jackson操作JSON数据*/
public classJacksonCase {/*** 序列化*/
public staticString serialize() {
MyBean bean= newMyBean();
bean.setS("测试字符串");
Calendar calendar=Calendar.getInstance();
calendar.add(Calendar.HOUR_OF_DAY,-1);
bean.setD(calendar.getTime());
List list = new ArrayList();
list.add(bean);
Map> map = new HashMap>();
map.put("data", list);
String result= "";try{
ObjectMapper objectMapper= newObjectMapper();//设置日期格式,也可在类属性上使用@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss")来设置
objectMapper.setDateFormat(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"));
objectMapper.setSerializationInclusion(Include.ALWAYS);//字符串如果为null则输出""
objectMapper.setSerializerFactory(objectMapper.getSerializerFactory().withSerializerModifier(newBeanSerializerModifier() {
@Overridepublic List changeProperties(SerializationConfig config, BeanDescription beanDesc, ListbeanProperties) {for(BeanPropertyWriter writer : beanProperties) {
Class> clazz =writer.getType().getRawClass();if (CharSequence.class.isAssignableFrom(clazz) || Character.class.isAssignableFrom(clazz)) {
writer.assignNullSerializer(new JsonSerializer() {
@Overridepublic void serialize(Object o, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throwsIOException {
jsonGenerator.writeString("");
}
});
}
}returnbeanProperties;
}
}));
result=objectMapper.writeValueAsString(map);
System.out.println(result);
}catch(Exception e) {
e.printStackTrace();
}returnresult;
}/*** 反序列化*/
public static voiddeserialize() {
String s=serialize();try{
ObjectMapper objectMapper= newObjectMapper();
objectMapper.setDateFormat(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"));
TypeReference>> type = new TypeReference>>(){};
Map> map =objectMapper.readValue(s, type);
System.out.println(map);//树模型api
JsonNode root =objectMapper.readTree(s);
JsonNode bean= root.get("data").get(0);
System.out.println(bean.get("s").asText());//...
} catch(Exception e) {
e.printStackTrace();
}
}public static voidmain(String[] args) {
serialize();
deserialize();
}
}