原创林天乐 发布于2018-10-15 16:20:25 阅读数 1462  收藏

项目中需要将前端传进的json数据清空值前后空格

两种实现方法

1.土方法 迭代trim()

  1.  
    RequestContext context = RequestContext.getCurrentContext();
  2.  
    InputStream in = (InputStream) context.get("requestEntity");
  3.  
    String body = StreamUtils.copyToString(in, Charset.forName("UTF-8"));
  4.  
    JSONObject object = JSON.parseObject(body);
  5.  
    if (object == null) object = new JSONObject();
  6.  
    jsonParameterTrimObject(object);
  7.  
     
  8.  
    /**
  9.  
    * 清空JSONObject 值前后空格
  10.  
    * @param object
  11.  
    */
  12.  
    private void jsonParameterTrimObject(JSONObject object){
  13.  
    for(String str: object.keySet()){
  14.  
    Object o = object.get(str);
  15.  
    if(null != o){
  16.  
    if(o instanceof String){ //值为字符串类型
  17.  
    object.put(str,((String) o).trim()); //清空值前后空格
  18.  
    }
  19.  
    if(o instanceof JSONObject){ //值为JSON对象
  20.  
    jsonParameterTrimObject((JSONObject)o);
  21.  
    }
  22.  
    if(o instanceof JSONArray) { //值为JSON数组
  23.  
    jsonParameterTrimArray((JSONArray)o);
  24.  
    }
  25.  
    }
  26.  
    }
  27.  
    }
  28.  
     
  29.  
    /**
  30.  
    * 清空JSONArray 值前后空格
  31.  
    * @param array
  32.  
    */
  33.  
    private void jsonParameterTrimArray(JSONArray array){
  34.  
    if(array.size() > 0){
  35.  
    for(int i=0; i< array.size();i++){
  36.  
    Object oa = array.get(i);
  37.  
    if(null != oa){
  38.  
    if(oa instanceof String){ //值为字符串类型
  39.  
    array.set(i,((String) oa).trim()); //清空值前后空格
  40.  
    }
  41.  
    if(oa instanceof JSONObject){ //值为JSON对象
  42.  
    jsonParameterTrimObject((JSONObject)oa);
  43.  
    }
  44.  
    if(oa instanceof JSONArray) { //值为JSON数组
  45.  
    jsonParameterTrimArray((JSONArray)oa);
  46.  
    }
  47.  
    }
  48.  
    }
  49.  
    }
  50.  
    }

2.使用fastJson 值过滤器

  1.  
    package cango.scf.com.filter;
  2.  
     
  3.  
    import com.alibaba.fastjson.serializer.ValueFilter;
  4.  
     
  5.  
    public class SimpleValueFilter implements ValueFilter {
  6.  
    @Override
  7.  
    public Object process(Object object, String name, Object value) {
  8.  
    if (value instanceof String) {
  9.  
    value = ((String) value).trim();
  10.  
    }
  11.  
    return value;
  12.  
    }
  13.  
    }
  14.  
     
  15.  
    RequestContext context = RequestContext.getCurrentContext();
  16.  
    InputStream in = (InputStream) context.get("requestEntity");
  17.  
    if (in == null) {
  18.  
    in = context.getRequest().getInputStream();
  19.  
    }
  20.  
    String body = StreamUtils.copyToString(in, Charset.forName("UTF-8"));
  21.  
    JSONObject object = JSON.parseObject(body);
  22.  
    if (object == null) object = new JSONObject();
  23.  
     
  24.  
    body = JSON.toJSONString(object, new SimpleValueFilter());

fastjson的值过滤器ValueFilter的更多相关文章

  1. FastJson前置属性过滤器

    FastJson前置属性过滤器 /** * <html> * <body> * <P> Copyright 1994 JsonInternational</p ...

  2. FastJson 输出值 首字母大小写问题

    解决方案: 1. 如果你的项目由多个模块且为分布式部署, 则可考虑使用设置System.property 2. 一般只是极少数的代码出现此情况, 那么建议直接在你的单例Service初始化时, 在静态 ...

  3. fastjson null 值处理

    偶然用到fastjson转换json 在前台用js解析竟然某些字段没有,曾经用过gson.联想到是不是相似gson默认将null值不显示了,找了下资料果真如此 直接上代码吧 import java.u ...

  4. HBase学习——4.HBase过滤器

    1.过滤器 基础API中的查询操作在面对大量数据的时候是非常苍白的,这里Hbase提供了高级的查询方法:Filter.Filter可以根据簇.列.版本等更多的条件来对数据进行过滤,基于Hbase本身提 ...

  5. Hbase Filter过滤器查询详解

    过滤器查询 引言:过滤器的类型很多,但是可以分为两大类——比较过滤器,专用过滤器 过滤器的作用是在服务端判断数据是否满足条件,然后只将满足条件的数据返回给客户端: hbase过滤器的比较运算符: LE ...

  6. HBase学习之路 (六)过滤器

    过滤器(Filter) 基础API中的查询操作在面对大量数据的时候是非常苍白的,这里Hbase提供了高级的查询方法:Filter.Filter可以根据簇.列.版本等更多的条件来对数据进行过滤,基于Hb ...

  7. HBase(七)Hbase过滤器

    一.过滤器(Filter) 基础API中的查询操作在面对大量数据的时候是非常苍白的,这里Hbase提供了高级的查询方法:Filter.Filter可以根据簇.列.版本等更多的条件来对数据进行过滤,基于 ...

  8. Hbase(四) 过滤器查询

    引言:过滤器的类型很多,但是可以分为两大类——比较过滤器,专用过滤器过滤器的作用是在服务端判断数据是否满足条件,然后只将满足条件的数据返回给客户端: 一.hbase过滤器的分类 1.比较过滤器 行键过 ...

  9. Hbase过滤器

    Hbase过滤器简介 HBase的基本API,包括增.删.改.查等,增.删都是相对简单的操作,与传统的RDBMS相比,这里的查询操作略显苍白,只能根据特性的行键进行查询(Get)或者根据行键的范围来查 ...

随机推荐

  1. win10禁止自动更新的终极方法(亲测有效)

    想必用过win10的朋友对其自动更新一定不会陌生,并且深恶痛绝,    有时正专注做一件事,突然就开始自动更新,被杀个措手不及,而且更新时间真的太久了,尤其最近更新频繁,真是伤脑筋,    期间也尝试 ...

  2. 连接远程服务器的几种方式/Vscode + Remote

    连接远程服务器的几种方式 前言 最近在尝试做网盘,使用的技术栈大概是 .net core + MVC + Mysql + Layui,主要目的是通过这个具体的项目,熟悉熟悉 .net core 开发, ...

  3. Centos 7 下安装 Jenkins

    Jenkins介绍 Jenkins是一个开源的支持自动化构建.部署等任务的平台.基本上可以说是持续集成(CI).持续发布(CD)不可或缺的工具. 安装Java环境 CentOS 7 安装 JAVA环境 ...

  4. JavaWeb中验证码校验的功能实现

    后台生成验证码工具方法 /* * 设置图片的背景色 */ public static void setBackGround(Graphics g, int WIDTH, int HEIGHT) { / ...

  5. 【AGC035F】Two Histograms

    Problem Description 你有一个 \(N\) 行.\(M\) 列的.每个格子都填写着 0 的表格.你进行了下面的操作: 对于每一行 \(i\) ,选定自然数 \(r_i\) (\(0\ ...

  6. jvm虚拟机笔记<二> 垃圾回收与内存分配

    确定对象已废弃需要两步: 利用可达性分析算法(与GC roots有关联——虚拟机栈中的对象,方法区静态对象,方法区常量对象,本地方法引用的对象)判断是否需要回收. 是否覆盖过finalize方法并执行 ...

  7. 深入selenium三种等待方式使用

    深入selenium三种等待方式使用 处理由于网络延迟造成没法找到网页元素 方法一 用time模块不推荐使用 用time模块中的time.sleep来完成等待 from selenium import ...

  8. 微信小程序——仿jqueryValidate表单验证插件WxValidate的二次封装(一)

    在做web开发时,表单验证插件我们前端用的是jqueryValidate,由于个人主要精力是在后台JAVA开发上,为了让插件与后台更好的结合和使用,通过JAVA的自定义组件将表单全部重新写了一边,同时 ...

  9. 创建密钥并使用密钥ssh登录linux

    创建密钥并使用密钥ssh登录linux 使用密钥对登录ssh简介 通过ssh_keygen胜场公钥和私钥,公钥放在要登录的目标的机器上,私钥放登录发起的机器上. 生成密钥 我是在ubuntu上生成的密 ...

  10. Violet音乐社区界面原型手册

    目录 Violet音乐社区界面原型手册 一.引言 1.0 项目前阶段相关文档 1.1 编写目的 1.2 开发背景 二.界面原型展示 2.0 界面设计说明 2.1 首页 2.2 歌单/专辑/单曲界面 2 ...