fastjson的值过滤器ValueFilter
项目中需要将前端传进的json数据清空值前后空格
两种实现方法
1.土方法 迭代trim()
- RequestContext context = RequestContext.getCurrentContext();
- InputStream in = (InputStream) context.get("requestEntity");
- String body = StreamUtils.copyToString(in, Charset.forName("UTF-8"));
- JSONObject object = JSON.parseObject(body);
- if (object == null) object = new JSONObject();
- jsonParameterTrimObject(object);
- /**
- * 清空JSONObject 值前后空格
- * @param object
- */
- private void jsonParameterTrimObject(JSONObject object){
- for(String str: object.keySet()){
- Object o = object.get(str);
- if(null != o){
- if(o instanceof String){ //值为字符串类型
- object.put(str,((String) o).trim()); //清空值前后空格
- }
- if(o instanceof JSONObject){ //值为JSON对象
- jsonParameterTrimObject((JSONObject)o);
- }
- if(o instanceof JSONArray) { //值为JSON数组
- jsonParameterTrimArray((JSONArray)o);
- }
- }
- }
- }
- /**
- * 清空JSONArray 值前后空格
- * @param array
- */
- private void jsonParameterTrimArray(JSONArray array){
- if(array.size() > 0){
- for(int i=0; i< array.size();i++){
- Object oa = array.get(i);
- if(null != oa){
- if(oa instanceof String){ //值为字符串类型
- array.set(i,((String) oa).trim()); //清空值前后空格
- }
- if(oa instanceof JSONObject){ //值为JSON对象
- jsonParameterTrimObject((JSONObject)oa);
- }
- if(oa instanceof JSONArray) { //值为JSON数组
- jsonParameterTrimArray((JSONArray)oa);
- }
- }
- }
- }
- }
2.使用fastJson 值过滤器
- package cango.scf.com.filter;
- import com.alibaba.fastjson.serializer.ValueFilter;
- public class SimpleValueFilter implements ValueFilter {
- @Override
- public Object process(Object object, String name, Object value) {
- if (value instanceof String) {
- value = ((String) value).trim();
- }
- return value;
- }
- }
- RequestContext context = RequestContext.getCurrentContext();
- InputStream in = (InputStream) context.get("requestEntity");
- if (in == null) {
- in = context.getRequest().getInputStream();
- }
- String body = StreamUtils.copyToString(in, Charset.forName("UTF-8"));
- JSONObject object = JSON.parseObject(body);
- if (object == null) object = new JSONObject();
- body = JSON.toJSONString(object, new SimpleValueFilter());
fastjson的值过滤器ValueFilter的更多相关文章
- FastJson前置属性过滤器
FastJson前置属性过滤器 /** * <html> * <body> * <P> Copyright 1994 JsonInternational</p ...
- FastJson 输出值 首字母大小写问题
解决方案: 1. 如果你的项目由多个模块且为分布式部署, 则可考虑使用设置System.property 2. 一般只是极少数的代码出现此情况, 那么建议直接在你的单例Service初始化时, 在静态 ...
- fastjson null 值处理
偶然用到fastjson转换json 在前台用js解析竟然某些字段没有,曾经用过gson.联想到是不是相似gson默认将null值不显示了,找了下资料果真如此 直接上代码吧 import java.u ...
- HBase学习——4.HBase过滤器
1.过滤器 基础API中的查询操作在面对大量数据的时候是非常苍白的,这里Hbase提供了高级的查询方法:Filter.Filter可以根据簇.列.版本等更多的条件来对数据进行过滤,基于Hbase本身提 ...
- Hbase Filter过滤器查询详解
过滤器查询 引言:过滤器的类型很多,但是可以分为两大类——比较过滤器,专用过滤器 过滤器的作用是在服务端判断数据是否满足条件,然后只将满足条件的数据返回给客户端: hbase过滤器的比较运算符: LE ...
- HBase学习之路 (六)过滤器
过滤器(Filter) 基础API中的查询操作在面对大量数据的时候是非常苍白的,这里Hbase提供了高级的查询方法:Filter.Filter可以根据簇.列.版本等更多的条件来对数据进行过滤,基于Hb ...
- HBase(七)Hbase过滤器
一.过滤器(Filter) 基础API中的查询操作在面对大量数据的时候是非常苍白的,这里Hbase提供了高级的查询方法:Filter.Filter可以根据簇.列.版本等更多的条件来对数据进行过滤,基于 ...
- Hbase(四) 过滤器查询
引言:过滤器的类型很多,但是可以分为两大类——比较过滤器,专用过滤器过滤器的作用是在服务端判断数据是否满足条件,然后只将满足条件的数据返回给客户端: 一.hbase过滤器的分类 1.比较过滤器 行键过 ...
- Hbase过滤器
Hbase过滤器简介 HBase的基本API,包括增.删.改.查等,增.删都是相对简单的操作,与传统的RDBMS相比,这里的查询操作略显苍白,只能根据特性的行键进行查询(Get)或者根据行键的范围来查 ...
随机推荐
- swoole为什么不能代替nginx
Swoole不能代替Apache和Nginx这些通用的HTTP服务器. 但基于Swoole开发的PHP应用不依赖Apache和Nginx也能提供生产级别的HTTP服务. 有需要学习交流的友人请加入交流 ...
- 阿里钉钉技术分享:企业级IM王者——钉钉在后端架构上的过人之处
本文引用了唐小智发表于InfoQ公众号上的“钉钉企业级IM存储架构创新之道”一文的部分内容,收录时有改动,感谢原作者的无私分享. 1.引言 业界的 IM 产品在功能上同质化较高,而企业级的 IM 产品 ...
- linux命令-开关机命令与系统痕迹命令
一.关机和重启命令 1.sync 命令 命令名称:sync 英文原意:flush file system buffers 所在路径:/bin/sync 执行权限:所有用户 功能描述:刷新文件系统缓冲区 ...
- sql server多表关联update
一般都是写的单表update语句,很少写多表关联的update,但是事实上,在SQL Server中,update的多表连接更新和select的多表连接查询在使用的方法上其实并没有多大区别. 直接上一 ...
- Netty实战:设计一个IM框架
来源:逅弈逐码 bitchat 是一个基于 Netty 的 IM 即时通讯框架 项目地址:https://github.com/all4you/bitchat 快速开始 bitchat-example ...
- docker postgres使用
1.拉取镜像文件docker pull postgres 2.容器后台进程运行,向外暴露32769端口 docker run -it --name mypostgres -p 32769:5432 - ...
- Pycharm2019最新激活注册码(pycharm激活教程)
给大家分享一下PyCharm2019最新可用的激活注册码.激活Pycharm专业版的方法有很多,这里主要给大家分享最有效的两种,一种是使用最新可用的注册激活码,一种是使用破解补丁的方法,这种方法虽然麻 ...
- redis windows版安装
首先到 https://github.com/ServiceStack/redis-windows 下载redis 然后将下载的文件解压 然后获取里面的这个压缩包并且解压 这是2.8.2101版本的, ...
- IDEA中GitLab的使用
首先安装git https://git-scm.com/downloads/ 下载对应的版本 下载好了,安装打开 Windows. 打开之后2步走,与git连接 首先选择仓库,进行git init本地 ...
- SQL Server存储过程数据库日志文件备份的脚本-干货
还是拿数据库AAAAAAAA为例子 CREATE PROC [dbo].[p_log_backupAAAAAAAA] @dbname sysname='', ...