Jackson 转json 时日期格式化,排除字段,包含字段

来源:互联网 发布:打淘宝发货单要用什么 编辑:程序博客网 时间:2024/04/23 16:41
package com.dj.spring3.jackson; 
import org.codehaus.jackson.map.SerializationConfig; 
import org.codehaus.jackson.map.introspect.BasicBeanDescription; 
import org.codehaus.jackson.map.ser.BeanSerializerFactory; 


/** 
 * @description 重写jackson 序列化工厂 
 * @author liudejian 
 * @date 2013-03-21 
 */ 
public class BidBeanSerializerFactory extends BeanSerializerFactory { 


    public final static BidBeanSerializerFactory instance = new BidBeanSerializerFactory(null); 
     
    private Object filterId; 
     
protected BidBeanSerializerFactory(Config config) { 
super(config); 


    @Override 
    protected Object findFilterId(SerializationConfig config, 
    BasicBeanDescription beanDesc) { 
    return getFilterId(); 
    } 


public Object getFilterId() { 
return filterId; 



public void setFilterId(Object filterId) { 
this.filterId = filterId; 


=======测试代码======================

package com.dj.spring3.jackson;


import java.text.SimpleDateFormat;
import java.util.Date;


import org.codehaus.jackson.JsonEncoding;
import org.codehaus.jackson.JsonGenerator;
import org.codehaus.jackson.map.ObjectMapper;
import org.codehaus.jackson.map.ser.impl.SimpleBeanPropertyFilter;
import org.codehaus.jackson.map.ser.impl.SimpleFilterProvider;


import com.dj.spring3.model.Fruit;


public class MyTest {


/**
* @param args
* @throws Exception
*/
public static void main(String[] args) throws Exception {


Fruit f = new Fruit();
f.setName("8888");
f.setQuality(1000);
f.setBuyTime(new Date());

ObjectMapper objectMapper = new ObjectMapper();
JsonEncoding encoding = JsonEncoding.UTF8;
objectMapper.setDateFormat(new SimpleDateFormat("yyyy-MM-dd"));

//排除
SimpleFilterProvider fileter = new SimpleFilterProvider();
fileter.addFilter(
"executeFilter",
SimpleBeanPropertyFilter.serializeAllExcept(new String[] {
 "quality" }));
objectMapper.setFilters(fileter);

//仅包含
// SimpleFilterProvider fileter2 = new SimpleFilterProvider();
// fileter2.addFilter(
// "includeFilter",
// SimpleBeanPropertyFilter.filterOutAllExcept(new String[] {
// "id", "quality" }));
// objectMapper.setFilters(fileter2);

//设置日期格式化
objectMapper.setDateFormat(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"));

JsonGenerator generator = objectMapper.getJsonFactory()
.createJsonGenerator(System.out, encoding);
BidBeanSerializerFactory bidBeanFactory = BidBeanSerializerFactory.instance;
bidBeanFactory.setFilterId("executeFilter"); //如果是仅包含这里填写  includeFilter
objectMapper.setSerializerFactory(bidBeanFactory);

objectMapper.writeValue(generator, f);


}


}

0 0
原创粉丝点击