/**
* @title JSON转换属性过滤器
* @description 用于JSON lib的JSON转换
* @author maohuidong
* @date 2017-04-06
*/
public class JsonConvertPropertyFilter implements PropertyFilter {
/**
* @function apply
* @param obj:待转换的对象 s: 对象的属性 value:对象的属性值
* @description JSON转换属性过滤器(Hibernate)
* @return true:过滤 false:不过滤
* @author maohuidong
* @date 2017-04-06
*/
@Override
public boolean apply(Object obj, String s, Object value) {
// hibernate代理对象未初始化,则过滤掉
if (value instanceof HibernateProxy) {
LazyInitializer initializer = ((HibernateProxy) value)
.getHibernateLazyInitializer();
if (initializer.isUninitialized()) {
return true;
}
}
// Hibernate持久化集合为初始化,则过滤掉(实体关联一对多)
if (value instanceof PersistentCollection) {
PersistentCollection collection = (PersistentCollection) value;
if (!collection.wasInitialized()) {
return true;
}
}
return false;
}
}

/**
* @function objStreamOutput
* @param 无
* @description 输出流封装
* @return 无
* @author maohuidong
* @date 2017-04-09
*/
protected void objStreamOutput(Object object,List<String> fieldFilter) throws IOException{
HttpServletResponse response = ServletActionContext.getResponse();
response.setCharacterEncoding("utf-8");
PrintWriter pWriter = response.getWriter();
//Json过滤
JsonConfig jsonConfig = new JsonConfig();
jsonConfig.setIgnoreDefaultExcludes(false);
if(fieldFilter == null){
fieldFilter = new ArrayList<String>();
}
//Json转换过滤没用的字段
fieldFilter.add("hibernateLazyInitializer");
String[] filter = new String[fieldFilter.size()];
filter = fieldFilter.toArray(filter);
jsonConfig.setExcludes(filter);
//Json转换过滤未初始化的数据
jsonConfig.setJsonPropertyFilter(new JsonConvertPropertyFilter());
//结果转换为json字符串
String str = "";
//结果集能实例化为List
if(object instanceof List){
JSONArray jsonArray = JSONArray.fromObject(object, jsonConfig);
str = jsonArray.toString();
}else if(object instanceof String){
str = (String) object;
}else if(object instanceof Number){
str = object.toString();
}
else{
JSONObject jsonObject = JSONObject.fromObject(object, jsonConfig);
str = jsonObject.toString();
}
pWriter.print(str);
pWriter.flush();
pWriter.close();
}

最新文章

  1. 获取tp-link中的拨号密码
  2. 一文读懂UGC:互联网上的生态秘密
  3. Leetcode 66 Plus One STL
  4. Java基础小记
  5. PAT1037:Magic Coupon
  6. C语言编程遇到的问题
  7. nlp基础(一)基本应用
  8. pytorch入门之安装和配置
  9. [ 原创 ] centos安装tomcat,启动成功 无法访问
  10. 面向对象&amp;网络编程
  11. phpmyadmin登录提示mysqli_real_connect(): (HY000/2002): No such file or directory和mysql8登录失败的问题
  12. 深浅拷贝 python
  13. 每日英语:Making the Most of Your Lunch Hour
  14. 【剑指offer】旋转数组的最小数字
  15. JNI中GetStringChars函数中的isCopy
  16. Elasticsearch学习(5) Elasticsearch+logstash +filebeat+log4j的日志系统
  17. MvcForum作者称该项目进入缓慢更新
  18. CF851 C 暴力
  19. ewebeditor编辑器配合IIS6.0解析漏洞拿shell
  20. pycharm配置教程

热门文章

  1. JMeter分布式部署的大致步骤以及误区解释
  2. Notepad++ 删除空白行的方法
  3. Android NDK R9 安装配置 无需Cygwin
  4. chrome从版本55开始,不再支持设置网页内容编码
  5. linux 下安装doker centeros6.5
  6. Flex 学习
  7. javascript事件处理程序的3个阶段
  8. 资源 | 源自斯坦福CS229,机器学习备忘录在集结
  9. jenkins API
  10. video元素和audio元素