ApiBoot - ApiBoot Http Converter 使用文档
ApiBoot是一款基于SpringBoot1.x,2.x的接口服务集成基础框架, 内部提供了框架的封装集成、使用扩展、自动化完成配置,让接口开发者可以选着性完成开箱即用, 不再为搭建接口框架而犯愁,从而极大的提高开发效率。
FastJson
是阿里巴巴提供的一款Json
格式化插件。
ApiBoot
提供了FastJson
驱动转换接口请求的Json
字符串数据,添加该依赖后会自动格式化时间(格式:YYYY-MM-DD HH:mm:ss)、空对象转换为空字符串返回、空Number转换为0等,还会自动装载ValueFilter
接口的实现类来完成自定义的数据格式转换。
引入Http Converter
ApiBoot Http Converter
使用非常简单,只需要在pom.xml
添加如下依赖:
<!--ApiBoot Http Converter-->
<dependency>
<groupId>org.minbox.framework</groupId>
<artifactId>api-boot-starter-http-converter</artifactId>
</dependency>
ApiBoot
所提供的依赖都不需要添加版本号,具体查看ApiBoot版本依赖
相关配置
ApiBoot Http Converter
通过使用SpringBoot
内置的配置参数名来确定是否开启,在SpringBoot
内可以通过spring.http.converters.preferred-json-mapper
来修改首选的Json
格式化插件,SpringBoot
已经提供了三种,分别是:gson
、jackson
、jsonb
,当我们配置该参数为fastJson
或不进行配置
就会使用ApiBoot Http Converter
提供的fastJson
来格式化转换Json
返回数据。
如下所示:
spring:
http:
converters:
# 不配置默认使用fastJson
preferred-json-mapper: fastJson
自定义ValueFilter
ValueFilter
是FastJson
的概念,用于自定义转换实现,比如:自定义格式化日期、自动截取小数点等。
下面提供一个ValueFilter
的简单示例,具体的使用请参考FastJson
官方文档。
ValueFilter示例
在使用ValueFilter
时一般都会搭配一个对应的自定义@Annotation
来进行组合使用,保留自定义小数点位数的示例如下所示:
创建 BigDecimalFormatter Annotation
@Target({ElementType.METHOD, ElementType.FIELD, ElementType.PARAMETER})
@Retention(RetentionPolicy.RUNTIME)
public @interface BigDecimalFormatter {
/**
* 小数位数,默认保留两位
* @return
*/
int scale() default 2;
}
创建 BigDecimal ValueFilter
public class BigDecimalValueFilter
implements ValueFilter {
/**
* logback
*/
Logger logger = LoggerFactory.getLogger(BigDecimalValueFilter.class);
/**
* @param object 对象
* @param name 对象的字段的名称
* @param value 对象的字段的值
*/
@Override
public Object process(Object object, String name, Object value) {
if (ValidateTools.isEmpty(value) || !(value instanceof BigDecimal)) {
return value;
}
return convertValue(object, name, value);
}
/**
* 转换值
*
* @param object 字段所属对象实例
* @param name 字段名称
* @param value 字段的值
* @return
*/
Object convertValue(Object object, String name, Object value) {
try {
/**
* 反射获取field
*/
Field field = object.getClass().getDeclaredField(name);
/**
*判断字段是否存在@BigDecimalFormatter注解
*/
if (field.isAnnotationPresent(BigDecimalFormatter.class)) {
BigDecimalFormatter bigDecimalFormatter = field.getAnnotation(BigDecimalFormatter.class);
// 执行格式化
BigDecimal decimal = (BigDecimal) value;
System.out.println(bigDecimalFormatter.scale());
// 保留小数位数,删除多余
value = decimal.setScale(bigDecimalFormatter.scale(), BigDecimal.ROUND_DOWN).doubleValue();
}
} catch (Exception e) {
logger.error("格式化BigDecimal字段出现异常:{}", e.getMessage());
}
return value;
}
}
使用 BigDecimalFormatter Annotation
@BigDecimalFormatter
private BigDecimal decimalValue;
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- CentOS 7中搭建NFS文件共享存储服务的完整步骤
- centos 7中添加一个新用户并授权的步骤详解
- Linux下Apache HTTP Server 2.4.26安装教程
- 详解linux下查看系统版本号信息的方法(总结)
- 详解Centos8 配置静态IP的实现
- Linux server配置安装Java与Tomcat服务器教程详解
- Ubuntu系统下安装ImageMagick出错的解决过程
- linux 远程控制windows系统下的程序(三种方法)
- 详解Linux上svn命令行批量操作
- 详解linux ntp服务器时间同步设置
- CentOS设置静态IP的方法总结
- ubuntu服务器上快速部署docker的方法
- centos7使用supervisor的详细教程
- Ubuntu安装PHP和PHP Nginx配置方法
- Django在Ubuntu14.04的部署方法