java调用bson4jackson_Java操作JSON数据(4,end)--Jackson操作JSON数据

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();

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值