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)或者根据行键的范围来查 ...
随机推荐
- Flink概述| 配置
流处理技术的演变 在开源世界里,Apache Storm项目是流处理的先锋.Storm提供了低延迟的流处理,但是它为实时性付出了一些代价:很难实现高吞吐,并且其正确性没能达到通常所需的水平,换句话说, ...
- 多线程七 AQS
一 . 简介AQS AQS简介 在同步组件的实现中,AQS是核心部分,同步组件的实现者,通过使用AQS提供的模板方法 实现同步组件语义 AQS实现了对同步状态的管理以及阻塞线程进行排队,等待通知等等一 ...
- c++ LeetCode(初级数组篇)十一道算法例题代码详解(一)
原文作者:aircraft 原文链接:https://www.cnblogs.com/DOMLX/p/10940636.html 唉!最近忙着面试找实习,然后都是面试的很多是leetcode的算法题, ...
- C# 重置IE安全等级
打开IE设置-安全 dynamic shellObject = Interaction.CreateObject("WScript.Shell", ""); / ...
- 《ServerSuperIO Designer IDE使用教程》- 7.增加机器学习算法,通讯采集数据与算法相结合。发布:4.2.5 版本
v4.2.5更新内容:1.修复服务实例设置ClearSocketSession参数时,可能出现资源无法释放而造成异常的情况.2.修复关闭宿主程序后进程仍然无法退出的问题.2.增加机器学习框架.3.优化 ...
- 基于asp.net(C#)MVC+前端bootstrap+ztree+lodash+jquery技术-Angel工作室通用权限管理
一.Angel工作室简单通用权限系统简介 AngelRM(Asp.net MVC Web api)是基于asp.net(C#)MVC+前端bootstrap+ztree+lodash+jquery技术 ...
- (转)vscode实现markdown流程图
原文:https://blog.csdn.net/LaySwift/article/details/79458947 1,vscode原生支持markdown,导出需要插件,基于node.js,需要n ...
- JavaScript基础6
计时器 setInterval() 按照指定周期来调用函数或计算表达式 以毫秒计算 语法 setInterval(code,millisec[,“lang”]) code 要调用的函 ...
- ArcGIS api for JavaScript 3.27 按需显示需要的图层
实例:现有一图层服务,现需要动态显示该图层中的一部分内容:点击一个图例,只显示这个图例的内容,再点击别的图例,原来的内容不消失,再次点击已被点击的图例才会消失. 思路:setLayerDefiniti ...
- 利用Azure虚拟机安装Dynamics 365 Customer Engagement之十一:SQL Server配置Always On后D365的配置更改
我是微软Dynamics 365 & Power Platform方面的工程师罗勇,也是2015年7月到2018年6月连续三年Dynamics CRM/Business Solutions方面 ...