`

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
分享到:
评论

相关推荐

    Spring4.2.9+mybatis3.4.4集成(整合Jackson版)支持JDK1.6、Tomcat6

    在实际开发中,我们还需要关注日志、异常处理、安全性、性能优化等方面,例如使用Log4j记录日志,通过@ControllerAdvice处理全局异常,使用Filter进行权限验证,以及通过缓存机制提升性能等。同时,遵循良好的编码...

    ssm框架所用到的jar(spring+springmvc+mybatis)

    - **jackson-databind.jar** 和 **jackson-core.jar**: Jackson库,用于JSON序列化和反序列化。 这些jar包组合在一起,构成了一个完整的SSM开发环境。开发者可以利用Spring进行依赖注入和管理,SpringMVC处理HTTP...

    web开发常用的jar包

    - `spring-core.jar`、`spring-beans.jar`、`spring-context.jar`等:Spring是一个全面的后端开发框架,提供依赖注入、AOP(面向切面编程)、MVC(Model-View-Controller)等特性,用于简化Web应用的构建和维护。...

    Spring Boot(二)之web综合开发

    在传统的Spring MVC应用中,为了创建JSON响应,我们需要配置Jackson库(如Jackson的Jackson-databind)并明确地在控制器方法上使用`@ResponseBody`注解。但在Spring Boot中,这一切变得更加自动化。只需在类上添加`@...

    springmvc+spirng+myibatis jar包

    7. **Jackson** (`jackson-mapper-asl-1.9.11.jar`):Jackson是一个流行的JSON处理库,用于将Java对象序列化为JSON和反序列化为Java对象。在Spring MVC中,它通常用于处理JSON格式的HTTP请求和响应。 总结来说,这...

    mavenflink.rar flink整理的依赖包,方便实用

    它支持事件时间和窗口操作,能处理无界和有界数据流,同时具备低延迟和高吞吐的特性。Flink的API简洁易用,包括Java API、Scala API以及Python API,满足不同开发者的语言需求。 二、Maven与Flink的依赖管理 ...

    springmvc所需jar包

    7. **jackson-databind-2.5.0.jar**:Jackson是一个流行的JSON处理库,databind模块提供了将Java对象序列化和反序列化为JSON的能力,常用于Spring MVC中的数据绑定和JSON响应。 8. **javassist-3.17.1-GA.jar**:这...

    android-interview-questions.zip

    - JSON解析:Gson、Jackson或org.json库用于解析JSON数据。 5. **多线程与并发**: - AsyncTask:简单的异步任务处理。 - Handler/Looper/Messenger:消息处理机制,实现线程间通信。 - Thread和Runnable:基础...

    spring-integration-reference

    - **Jackson Support (JSON)**:集成了Jackson库,使得JSON格式的消息处理更加便捷。 - **HTTP Outbound Endpoint 'encode-uri' property**:增加了URI编码的配置选项,避免了手动编码的问题。 - **AMQP Outbound ...

    SpringMVC 学习总结

    3. **配置 Jackson 或 Gson 解析器:**通过配置文件或代码的方式,指定 JSON 解析库(Jackson 或 Gson)。 #### 总结 SpringMVC 是一个功能强大且灵活的 Web 开发框架,它简化了 Web 应用程序的开发过程,提供了...

    J2EE项目开发常用的jar包

    7. **Spring框架**:spring-core.jar、spring-context.jar、spring-webmvc.jar等,Spring框架是J2EE项目中常用的轻量级容器,它提供了依赖注入、AOP(面向切面编程)、MVC等特性。 8. **MyBatis**:mybatis.jar和...

    Android面试宝典.doc

    - Intent和Intent Filter:Android应用间的通信机制。 - Bundle和Parcelable接口:数据序列化和跨进程传输。 - Service:后台服务的实现和生命周期管理。 2. **Android UI设计** - Layouts:线性、相对、约束...

    ssm项目所需JAR包

    Spring的核心特性包括依赖注入(Dependency Injection,DI)、面向切面编程(Aspect-Oriented Programming,AOP)以及一系列的容器和模块。在JAR包中,可能包含`spring-beans`, `spring-context`, `spring-web`, `...

    resteasy-jaxrs-2.2.1.GA-src官方源码

    Resteasy的核心特性包括: 1. 支持JSR 311:它遵循Java API for RESTful Web Services规范,提供了一种标准的方式来创建和消费RESTful服务。 2. 多种集成方式:Resteasy可以轻松地与各种应用服务器如JBoss、Tomcat等...

    JSON序列化和反序列化.docx

    Jackson 是一个广泛使用的 Java 库,用于处理 JSON 数据的序列化和反序列化。它提供了丰富的注解,使我们能够自定义 JSON 输出的形式和行为。...在实际开发中,灵活运用这些特性可以提高 API 的可维护性和安全性。

    FastJson1.2.5

    - **过滤器机制**:通过`JSONFilter`可以在序列化或反序列化时对数据进行过滤和修改。 - **JSONPath支持**:类似XPath的JSON数据查询语法,方便提取JSON数据。 3. **FastJson的性能优势** - FastJson以其高性能...

    Android+Java面试题

    对于Java面试,除了Android特定的知识外,还需要掌握Java语言特性和高级特性,例如反射、枚举、集合框架、并发编程、JVM内存模型等。同时,对于软件工程、设计原则和编程规范也是考察的重点。准备面试时,不仅要理解...

    springMVC4.1.6版本所有jar包.zip

    除此之外,可能还包括其他依赖库,如 Servlet API、JSTL、Commons Logging、Jackson 或 Gson(用于 JSON 处理),以及可能的其他第三方库,这些都为 Spring MVC 的功能提供了必要的支持。 开发者在使用这些 jar 包...

    android 面试笔试题(有答案)

    - Intents与Intent Filters:理解如何通过Intent在组件间传递数据,以及Intent Filter的作用。 - Layouts与View:熟悉各种布局管理器如LinearLayout、RelativeLayout、ConstraintLayout等,以及自定义View的创建。...

    springMVC3.0.5常用的所有jar包.zip

    9. **其他依赖**:还有一些其他第三方库的 jar 包,如 Jakarta Commons 编码库、JSON 处理库(如 Jackson 或 Gson)、 Velocity 视图引擎等,它们为 Spring MVC 提供额外的支持。 在开发过程中,我们需要根据项目...

Global site tag (gtag.js) - Google Analytics