`

jackson-filter特性

 
阅读更多
jackson提供动态序列化的输出json

static final ObjectMapper mapper = new ObjectMapper();

static {
        //用到mapper的地方千万别换
        mapper.setFilters(getFilters());
    }



 private static FilterProvider getFilters() {
        FilterProvider filters = new SimpleFilterProvider()
                .addFilter("afareFlightFilter", new SimpleBeanPropertyFilter(){
					@Override
					public void serializeAsField(
							Object bean,
							org.codehaus.jackson.JsonGenerator jgen,
							org.codehaus.jackson.map.SerializerProvider prov,
							org.codehaus.jackson.map.ser.BeanPropertyWriter writer)
							throws Exception {
						if (afareFlightFilterSets.contains(writer.getName())) {
			                return;
			            }
						
						if ("group".contains(writer.getName()) && 
								StringUtils.equals(writer.get(bean).toString(), "0")) {
							return;
			            }
						writer.serializeAsField(bean, jgen, prov);
						
					}
                	
                });
        return filters;
    }



@JsonFilter("afareFlightFilter")
public class AfareFlight implements Serializable{

    private static final long serialVersionUID = -5691992455196596940L;

    String carrier;
    String flightNumber;
    String depAirport;
    String depTime;
    String arrAirport;
    String arrTime;
    String stopCities;
    boolean codeshare;
    String cabin;

    /* 新增字段:舱位等级 1 经济舱,2 商务舱,3 头等舱,*/
    int cabinClass = 0;

    String aircraftCode;

    /**
     * 当前航段所属航程序号,从1开始
     * 例如多程第一段:A-B-C;第二段:D-F
     * 则航段A-B B-C的tripIndex值为1,D-F的tripIndex值为2
     */
    int group;
}



测试代码:
    public static void main(String[] args) throws Exception {
    	AfareBookingRequest request = new AfareBookingRequest();
    	AfareSimpleRouting routing = new AfareSimpleRouting();
    	request.setRouting(routing);
    	List<AfareFlight> fromSegments = Lists.newArrayList();
    	routing.setFromSegments(fromSegments);
    	AfareFlight f = new AfareFlight();
    	f.setGroup(0);
    	fromSegments.add(f);
    	String s = mapper.writeValueAsString(request);
    	System.out.println(s);
	}


设置group为0 :不输出group
设置group为1:输出group
0
1
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics