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
分享到:
相关推荐
在实际开发中,我们还需要关注日志、异常处理、安全性、性能优化等方面,例如使用Log4j记录日志,通过@ControllerAdvice处理全局异常,使用Filter进行权限验证,以及通过缓存机制提升性能等。同时,遵循良好的编码...
- **jackson-databind.jar** 和 **jackson-core.jar**: Jackson库,用于JSON序列化和反序列化。 这些jar包组合在一起,构成了一个完整的SSM开发环境。开发者可以利用Spring进行依赖注入和管理,SpringMVC处理HTTP...
- `spring-core.jar`、`spring-beans.jar`、`spring-context.jar`等:Spring是一个全面的后端开发框架,提供依赖注入、AOP(面向切面编程)、MVC(Model-View-Controller)等特性,用于简化Web应用的构建和维护。...
在传统的Spring MVC应用中,为了创建JSON响应,我们需要配置Jackson库(如Jackson的Jackson-databind)并明确地在控制器方法上使用`@ResponseBody`注解。但在Spring Boot中,这一切变得更加自动化。只需在类上添加`@...
7. **Jackson** (`jackson-mapper-asl-1.9.11.jar`):Jackson是一个流行的JSON处理库,用于将Java对象序列化为JSON和反序列化为Java对象。在Spring MVC中,它通常用于处理JSON格式的HTTP请求和响应。 总结来说,这...
它支持事件时间和窗口操作,能处理无界和有界数据流,同时具备低延迟和高吞吐的特性。Flink的API简洁易用,包括Java API、Scala API以及Python API,满足不同开发者的语言需求。 二、Maven与Flink的依赖管理 ...
7. **jackson-databind-2.5.0.jar**:Jackson是一个流行的JSON处理库,databind模块提供了将Java对象序列化和反序列化为JSON的能力,常用于Spring MVC中的数据绑定和JSON响应。 8. **javassist-3.17.1-GA.jar**:这...
- JSON解析:Gson、Jackson或org.json库用于解析JSON数据。 5. **多线程与并发**: - AsyncTask:简单的异步任务处理。 - Handler/Looper/Messenger:消息处理机制,实现线程间通信。 - Thread和Runnable:基础...
- **Jackson Support (JSON)**:集成了Jackson库,使得JSON格式的消息处理更加便捷。 - **HTTP Outbound Endpoint 'encode-uri' property**:增加了URI编码的配置选项,避免了手动编码的问题。 - **AMQP Outbound ...
3. **配置 Jackson 或 Gson 解析器:**通过配置文件或代码的方式,指定 JSON 解析库(Jackson 或 Gson)。 #### 总结 SpringMVC 是一个功能强大且灵活的 Web 开发框架,它简化了 Web 应用程序的开发过程,提供了...
7. **Spring框架**:spring-core.jar、spring-context.jar、spring-webmvc.jar等,Spring框架是J2EE项目中常用的轻量级容器,它提供了依赖注入、AOP(面向切面编程)、MVC等特性。 8. **MyBatis**:mybatis.jar和...
- Intent和Intent Filter:Android应用间的通信机制。 - Bundle和Parcelable接口:数据序列化和跨进程传输。 - Service:后台服务的实现和生命周期管理。 2. **Android UI设计** - Layouts:线性、相对、约束...
Spring的核心特性包括依赖注入(Dependency Injection,DI)、面向切面编程(Aspect-Oriented Programming,AOP)以及一系列的容器和模块。在JAR包中,可能包含`spring-beans`, `spring-context`, `spring-web`, `...
Resteasy的核心特性包括: 1. 支持JSR 311:它遵循Java API for RESTful Web Services规范,提供了一种标准的方式来创建和消费RESTful服务。 2. 多种集成方式:Resteasy可以轻松地与各种应用服务器如JBoss、Tomcat等...
Jackson 是一个广泛使用的 Java 库,用于处理 JSON 数据的序列化和反序列化。它提供了丰富的注解,使我们能够自定义 JSON 输出的形式和行为。...在实际开发中,灵活运用这些特性可以提高 API 的可维护性和安全性。
- **过滤器机制**:通过`JSONFilter`可以在序列化或反序列化时对数据进行过滤和修改。 - **JSONPath支持**:类似XPath的JSON数据查询语法,方便提取JSON数据。 3. **FastJson的性能优势** - FastJson以其高性能...
对于Java面试,除了Android特定的知识外,还需要掌握Java语言特性和高级特性,例如反射、枚举、集合框架、并发编程、JVM内存模型等。同时,对于软件工程、设计原则和编程规范也是考察的重点。准备面试时,不仅要理解...
除此之外,可能还包括其他依赖库,如 Servlet API、JSTL、Commons Logging、Jackson 或 Gson(用于 JSON 处理),以及可能的其他第三方库,这些都为 Spring MVC 的功能提供了必要的支持。 开发者在使用这些 jar 包...
- Intents与Intent Filters:理解如何通过Intent在组件间传递数据,以及Intent Filter的作用。 - Layouts与View:熟悉各种布局管理器如LinearLayout、RelativeLayout、ConstraintLayout等,以及自定义View的创建。...
9. **其他依赖**:还有一些其他第三方库的 jar 包,如 Jakarta Commons 编码库、JSON 处理库(如 Jackson 或 Gson)、 Velocity 视图引擎等,它们为 Spring MVC 提供额外的支持。 在开发过程中,我们需要根据项目...