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
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值