利用fastjson快速过滤对象中的无效属性及统一格式化时间

作者: admin 分类: *json 发布时间: 2019-01-01 01:47  阅读: 181 views

有些时候在项目中会定义大量的bean对象,用来传递,但是对象的某些属性是不需要返回给前段的,或者需要对某些属性做过滤处理

例如下面的字符串:class对象是不想暴露给外边的

String jsonObject = "{\"code\":200,\"data\":"
        + "{\"repeatTime\":60,\"numToReport\":2,\"pageSize\":5,\"reportUrl\":\"http://xxx.xx.xxx.xx/\","
        + "\"changedEvent\":["
        + "{\"eventId\":10003,\"priority\":100,\"class\":\"com.abc.test.commonService\"},"
        + "{\"eventId\":10002,\"priority\":10,\"class\":\"com.abc.test.commonService\"},"
        + "{\"eventId\":10001,\"priority\":20,\"class\":\"com.abc.test.commonService\"},"
        + "{\"eventId\":10004,\"priority\":10,\"class\":\"com.abc.test.commonService\"}],"
        + "\"class\":\"com.abc.test.commonService\"},"
        + "\"success\":true,\"class\":\"com.abc.test.xxxService\",\"statusCode\":200}";

通过以下方式可以过滤掉class属性,且对日期进行格式化处理

response.setContentType("application/json;charset=UTF-8");
      PropertyFilter profilter = new PropertyFilter() {
        @Override
        public boolean apply(Object object, String name, Object value) {
          if (name.equalsIgnoreCase("class")) {
            // false表示class字段将被排除在外
            return false;
          }
          return true;
        }
      };

JSON.DEFFAULT_DATE_FORMAT = "yyyy-MM-dd HH:mm:ss"; // 时间的默认处理格式
System.out.println(JSON.toJSONString(result, profilter, SerializerFeature.WriteDateUseDateFormat));

这里对时间的处理,是将 java.util.Date类型转换为yyyy-MM-dd HH:mm:ss

对timestamp时间戳不做格式化处理

 


   原创文章,转载请标明本文链接: 利用fastjson快速过滤对象中的无效属性及统一格式化时间

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!

发表评论

电子邮件地址不会被公开。 必填项已用*标注