spring字符串判空_spring框架返回json数据null转空字符串
spring项目中,前端获取服务器返回的json时,里面有null值,如果没做校验,就会导致js报错,但是不推荐每个返回的地方手动处理,而是应该在框架中统一配置。
前面关于json日期格式化的文章中,提到了spring默认使用的是jackson来做json序列化,相对应的converter是MappingJackson2HttpMessageConverter,我们依旧还是要利用它提供的ObjectMapper来解决上面的问题。
1、继承ObjectMapper,自定义mapper
package com.ssm.common;
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.JsonSerializer;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;
import com.fasterxml.jackson.databind.SerializerProvider;
import java.io.IOException;
import java.text.SimpleDateFormat;
/**
* SpringMVC中@ResponseBody返回json时,默认使用jackson,但是不会自动将null转成空字符串,
* 所以这里继承ObjectMapper重写构造方法,在构造方法中进行手动处理
* Created by SongFei on 2016/12/26.
*/
public class JsonMapper extends ObjectMapper{
public JsonMapper(){
super();
// null值转空字符串
this.getSerializerProvider().setNullValueSerializer(new JsonSerializer() {
@Override
public void serialize(Object value, JsonGenerator generator, SerializerProvider provider) throws IOException{
generator.writeString("");
}
});
// 不返回时间戳格式
this.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false);
// 遇到不认识的字段,不抛异常
this.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
// 指定自己想要的日期格式,如:yyyy-MM-dd HH:mm:ss
this.setDateFormat(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"));
}
}
2、在配置文件中的标签中对messageconverter做特殊处理,引入自定义的ObjectMapper
application/json;charset=UTF-8
text/json;charset=UTF-8
上述两个步骤确认无误之后,看一下效果:
如果是springboot项目,就更简单了,直接在config类中对ObjectMapper操作,都不用自己重新写:
@Bean
public MappingJackson2HttpMessageConverter mappingJackson2HttpMessageConverter(){
MappingJackson2HttpMessageConverter mappingJackson2HttpMessageConverter = new MappingJackson2HttpMessageConverter();
List supported = new ArrayList<>();
supported.add(MediaType.APPLICATION_JSON_UTF8);
mappingJackson2HttpMessageConverter.setSupportedMediaTypes(supported);
// JsonMapper
ObjectMapper objectMapper = new ObjectMapper();
// null值的处理,必须要放在第一步,否则会将下面的日期格式化覆盖掉
// null ==> ""
objectMapper.getSerializerProvider().setNullValueSerializer(new JsonSerializer() {
@Override
public void serialize(Object value, JsonGenerator gen, SerializerProvider serializers) throws IOException{
gen.writeString("");
}
});
// 处理默认日期格式化:yyyy-MM-dd HH:mm:ss
objectMapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false);
objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
objectMapper.setDateFormat(new SimpleDateFormat(Constants.TIME_PATTERN));
mappingJackson2HttpMessageConverter.setObjectMapper(objectMapper);
return mappingJackson2HttpMessageConverter;
}
spring字符串判空_spring框架返回json数据null转空字符串相关推荐
- return 输出为空php,thinkphp5 返回json数据的方法---以及返回json为空的原因
thinkphp5 返回json数据为空的解决方法 1.用SoapUI来测试借口,Content-Type不是json,而是text/html: 2.自己的接口,最后的数据用了json_encode, ...
- spring security如果未登录,返回JSON数据
默认情况下,spring security如果检测到未登录,会返回一个登录页面.对于前后端分离的项目,我们一般是希望能返回自定义的JSON数据.这时候,就需要继承类LoginUrlAuthentica ...
- json日期格式化 java_java_Java Web程序中利用Spring框架返回JSON格式的日期,返回Json时格式化日期Date
第一 - phpStudy...
Java Web程序中利用Spring框架返回JSON格式的日期 返回Json时格式化日期Date第一步:创建CustomObjectMapper类 /** * 解决SpringMVC使用@Respo ...
- 处理文件上传后返回json数据在IE出现文件下载问题(框架是spring boot)
处理文件上传后返回json数据在IE出现文件下载问题(框架是spring boot) 最近做了一个上传xml文件的功能,在谷歌浏览上传没有问题,可以返回正确的结果,但在ie浏览器上上传成功以后,一直提 ...
- spring MVC之返回JSON数据(Spring3.0 MVC+Jackson+AJAX)
参考: http://angelbill3.iteye.com/blog/1985075 问题:在进行springmvc返回json数据的时候报如下错误:用上面的controller,访问:http: ...
- 从零开始学springboot笔记(二)-Spring boot返回json数据(中文无乱码)
先创建json实体类,如下: public class Demo {private int age; private String address; private String name; priv ...
- idea+springmvc+spring+mybatis+maven整合返回json数据web api-
本人大三,第一次写博客,还有许多不懂得地方,如果有不当的地方 欢迎各位指教 项目地址:https://github.com/qq571831158/Springmvc-spring-mybatisDe ...
- ajax返回字符串怎么处理,ajax请求返回json字符串/json对象 处理
1. 返回json字符串如何处理 $.ajax({ url:xxx, success:function(date){ }, error:function(){ } }); 通过最原始的返回: Prin ...
- Spring Boot 返回 JSON 数据,一分钟搞定!
在 WEB 项目中返回 JSON 数据是常见的交互形式,在 Spring Boot 中这一切都变得十分简单.So easy!!! 你所需具备的基础 什么是 Spring Boot? Spring Bo ...
最新文章
- ipfs浏览器java实现_IPFS + Ethereum(上篇):JS+IPFS-API存储和获取数据
- HIbernate的检索方式
- Roman to Integer - LeetCode
- MySQL数据库服务器 主从配置
- windos 服务怎么写_周岁邀请函怎么写
- 盘点:互联网上无处不在的僵尸
- Android UsageStatsService(应用使用统计服务)的学习与调研
- 在Linux服务器上下载百度云盘中的资料
- 医疗器械信号输入输出部分,以及电气绝缘图,环境试验后的标准
- 我的世界服务器交易系统,《我的世界》交易系统介绍 村民交易系统详解
- Python 中常用的保留字(关键字)详解
- win10 操作无法完成,因为文件已在windows资源管理器打开
- html5项目改造Vue工程化
- 重磅丨数据+场景双重互联,有米广告完成程序化场景营销升级
- php计算笛卡尔积批量生成电商sku列表
- vxworks下的脚本script创建和使用(相当于windows下的autoexec.bat)
- AI人工智能简介和其定义
- Hadoop环境配置(6)-MySQL安装
- dom4j 学习 -- 封装dom4j工具类+如何使用dom4j解析
- 高考数学计算机题,高考数学题型全归纳汇总
热门文章
- CAD二次开发发送命名 带objectId、导出igs格式
- 2022年最新宁夏机动车签字授权人模拟考试及答案
- oracle数据库的基本教程 pdf,Oracle数据库技术基础教程 PDF 下载
- 进制转换——基于STC89C52RC系列单片机
- eslint Oops! Something went wrong!
- 自适应php导航网站源码,php网址导航源码v1.6自适应导航源码
- xgboost算法预测彩票中奖号
- 教训总结(持续更新中)
- 单摆周期控制装置(I题)(组委会自命题)
- FME应用之南京市国土资源局图形平台升级数据整理及数据管理平台建设