原创林天乐 发布于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());

最新文章

  1. 走进vue.js(一)
  2. 发送http请求get方法
  3. Codeforces Round #248 (Div. 2) A. Kitahara Haruki&#39;s Gift
  4. top free综合监控工具
  5. So many good projects for studying C programming lanuage.
  6. django 学习-6 定义模型--数据库的使用
  7. ffmpeg 的tutorial
  8. VS2010中&lt;无法打开包括文件:“iostream.h”:&gt;错误解决方法
  9. android动效开篇
  10. 4、深入理解Bean
  11. [转载]或许您还不知道的八款Android开源游戏引擎
  12. 项目实战5—企业级缓存系统varnish应用与实战
  13. Java-Iterator总结
  14. [模板] 次短路 | bzoj1726-[Usaco2006Nov]Roadblocks第二短路
  15. PHP全栈学习笔记18
  16. Java strictfp
  17. int和string之间的转换
  18. shiro登录实现自定义路径跳转
  19. [剑指Offer]27-二叉树的镜像
  20. Android应用icon和闪屏splash的尺寸

热门文章

  1. Linux下动态切换EHCI控制器下端口的速率(即切换为12M)
  2. 集合系列 List(四):LinkedList
  3. javascript截取字符串的最后几个字符
  4. #w29 2019年大前端技术周刊
  5. Oracle - SPM固定执行计划(二)
  6. 阿里面试实战题1----TreeSet,HashSet 区别
  7. Flask 教程 第六章:个人主页和头像
  8. iOS随记
  9. USB免驱RFID读写器编程解析之一:智能卡篇
  10. [logstash.outputs.elasticsearch] retrying failed action with response code: 403