全局返回json数据简繁体字转换(返回数据里的中文全改成繁体字)
1.因为StringSerializer有final修饰,所以拷一份
com.fasterxml.jackson.databind.ser.std.StringSerializer,对里面的serializeWithType方法做下改写,根据没有没传入转繁体字请求头,确定要不要把中文转成繁体
@JacksonStdImpl
public final class MyStringSerializer extends StdScalarSerializer<Object> implements ContextualSerializer {private static final long serialVersionUID = 1L;public MyStringSerializer() {super(String.class, false);}.....................@Overridepublic final void serializeWithType(Object value, JsonGenerator gen, SerializerProvider provider,TypeSerializer typeSer) throws IOException {// no type info, just regular serializationgenStr(value, gen);}.........................private void genStr(Object value, JsonGenerator gen) throws IOException {// 查看上下文中有没有返回简体或繁体的标识String strValue = (String) value;gen.writeString(needFTZ() ? DrinStringUtils.toFTZ(strValue) : strValue);}private boolean needFTZ() {HttpServletRequest request = getRequest();if (null == request) {return false;}String ftzFlag = request.getHeader(StaticValue.STATIC_JT_OR_FT);// 如果不为空且等于1,所有接口返回的汉字都是简体return DrinStringUtils.isNotNull(ftzFlag) && StaticValue.STATIC_ONE.equals(String.valueOf(ftzFlag));}private HttpServletRequest getRequest() {try {return ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();} catch (Exception e) {return null;}}private String toFTZ(String jtz) {return ZHConverter.convert(jtz, ZHConverter.TRADITIONAL);}
}
2.写一个自定义的BeanSerializerFactory,把里面的默认string序列化类替换掉。
public class MyBeanSerializerFactory extends BeanSerializerFactory {private static final long serialVersionUID = 1L;public MyBeanSerializerFactory(SerializerFactoryConfig config) {super(config);// 强行替换父类里面的字符串序列化工具_concrete.put(String.class.getName(), new MyStringSerializer());}}
3:定义一个ObjectMapper bean,将SerializerFactory替换
@Beanpublic ObjectMapper createObjectMapper() {ObjectMapper objectMapper = new ObjectMapper();// 时区objectMapper.setTimeZone(TimeZone.getTimeZone("GMT+8"));// 对空值的处理objectMapper.setDefaultPropertyInclusion(JsonInclude.Include.ALWAYS);// 替换默认的序列化工厂,把对字符串的转换设置成自定义带繁简的序列化工具objectMapper.setSerializerFactory(new MyBeanSerializerFactory(null));// 设置重写了parse方法的日期formatobjectMapper.setDateFormat(new MySimpleDateFormat("yyyy-MM-dd HH:mm:ss"));return objectMapper;}
全局返回json数据简繁体字转换(返回数据里的中文全改成繁体字)相关推荐
- java json 返回null,[] Spring4 MVC 返回json格式时候 设置不返回null值属性的有关问题...
[求助] Spring4 MVC 返回json格式时候 设置不返回null值属性的问题 本帖最后由 bighong0404 于 2015-10-06 12:45:38 编辑 背景: 使用@respon ...
- php返回json数组元素,php生成返回json对象数组(json支持中文)
php生成返回json对象数组 注意两种方法生成的对象数组在结构上的区别 $jarr=array( 'total' => 239, 'list' => array( array( 'cod ...
- json日期格式化 java_java_Java Web程序中利用Spring框架返回JSON格式的日期,返回Json时格式化日期Date
第一 - phpStudy...
Java Web程序中利用Spring框架返回JSON格式的日期 返回Json时格式化日期Date第一步:创建CustomObjectMapper类 /** * 解决SpringMVC使用@Respo ...
- html图片如何转换成word文档格式,怎么将Word文档里的图片格式改成文字格式?
回答: 使用Word编辑文档的时候,不仅可以保存成Word格式,也可以保存为其它格式.但有的时候需要将大批的已经编辑完成的Word文档转换成文本格式或其他格式文档,怎么办?如果通过"另存为& ...
- HTML返回上一级目录图片,html中想把图片绝对路径 改成相对路径怎么操作?
首先要我们要弄懂相对路径修改成绝对路径那么必须要知道路径的基本概念. html中的路径:指文件存放的位置,在网页中利用路径可以引用文件,完成:插入图像.视频等功能.表示在html中路径的使用方式有两种 ...
- php拆分jsion_Php如何返回json数据,前后端分离的基本解决方案
php返回json,xml,JSONP等格式的数据 返回json数据: header('Content-Type:application/json; charset=utf-8'); $arr = a ...
- Flask 学习-6. jsonify()返回JSON格式数据
前言 JSON 格式的响应是常见的,用 Flask 写这样的 API 是很容易上手的.如果从视图 返回一个 dict ,那么它会被转换为一个 JSON 响应. 返回JSON 格式 如果从视图 返回一个 ...
- java json自定义_java返回json设置自定义的格式
springMvc返回Json中自定义日期格式 (一)输出json数据 springmvc中使用jackson-mapper-asl即可进行json输出,在配置上有几点: 1.使用mvc:annota ...
- Spring MVC Controller 的同一个 URL 请求,根据逻辑判断返回 JSON 或者 HTML 视图
为什么80%的码农都做不了架构师?>>> 需求 有这样一个需求,用户注册时,对于浏览器终端和非浏览器终端发起的 HTTP 请求,都走同一个 URL:/user/register ...
- 返回ajax有几种方式,java ajax返回 Json 的 几种方式
方式 1. : 自写代码转 Json 需要 HttpHttpServletRequest request HttpServletResponse response 后台 : @RequestMap ...
最新文章
- [转载]正确解决:坑爹的0xc000007b——应用程序无法正常启动
- Android开发--SharedPreferences初步介绍
- 【Android 异步操作】线程池 ( 线程池简介 | 线程池初始化方法 | 线程池种类 | AsyncTask 使用线程池示例 )
- 所有编程皆为Web编程
- cmd中如何查看当前绝对路径_如何查看 Linux 中文件打开情况?
- 【Spring Cloud笔记】 Eureka通过集群实现高可用
- 医疗设备-监护仪-数据解析(协议、通信)
- Err CLSU-00104: additional error information: need ha priv
- mysql.server的路径_WindowsMysqlServer重启,log-bin路径配置
- 【爬虫】利用Python爬虫爬取小麦苗itpub博客的所有文章的连接地址(1)
- 计算机应用基础员工工资表,利用VBA编写Excel中的工资条与工资查询窗口
- 智能决策支持系统(IDSS)
- 氚云ajax,氚云帮助中心
- iOS APP打开微信小程序
- vue-cli-service build 如何环境设置,打出不同环境的包
- mysql删除与另外一张表有交集的表的记录
- 枚举 switch case 标签必须为枚举常量的非限定名称
- 动画模拟实现电梯的载客运行过程
- 找到可靠的游戏外包开发公司
- 鱼眼参数的数值计算优化方法
热门文章
- 电脑启动卡、慢,运行起来后,可能可以慢慢恢复正常问题的原因和解决方案
- mysql jion on 三表_MySQL 三表连接(join)
- 微信小助手都有什么功能?WeChatPlugin mac最新版使用教程
- ARM 汇编语言程序设计
- 计算机鼠标右键的主要应用是什么原因,win7电脑桌面鼠标右键功能和作用|win7 64位桌面右键没反应,反应非常慢...
- CSS普通属性篇(一):relative与absolute
- 什么是“理解”?如何在人工智能中定义“理解”?(what is understanding ?)
- 操作系统 第七章 文件管理
- 双系统启动引导项配置
- Rk3288 android USB双摄像头录制视频