Jsonlib 属性过滤器
/**
* @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();
}
Jsonlib 属性过滤器的更多相关文章
- grootJs 属性过滤器
index10.html <html><head> <title>属性过滤器</title> <script src="jquery-1 ...
- fastjson格式化bean的简易属性过滤器
fastjson的bean属性过滤器 有的时候,我们在接口开发时,一个完整的bean会包含很多属性,但是前端接口只需要其中的某几个属性时,应该在对json的返回要进行精简.下面直接看代码 packag ...
- FastJson前置属性过滤器
FastJson前置属性过滤器 /** * <html> * <body> * <P> Copyright 1994 JsonInternational</p ...
- HCNP Routing&Switching之BGP团体属性和团体属性过滤器
前文我们了解了BGP的路由过滤已经as-path过滤器的使用相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15542559.html:今天我们来聊一聊 ...
- jquery属性过滤器
<!DOCTYPE html><html><head><meta http-equiv="Content-Type" content=&q ...
- jQuery表单对象属性过滤器再探究(原创)
上面例子的总结: 1.”+n+”千万不要把前面或者后面的+漏掉了.否则不会出现正确结果 2.$(“:checkbox”).click(countChecked)注意写法,不是click(functio ...
- 前端MVC Vue2学习总结(三)——模板语法、过滤器、计算属性、观察者、Class 与 Style 绑定
Vue.js 使用了基于 HTML 的模版语法,允许开发者声明式地将 DOM 绑定至底层 Vue 实例的数据.所有 Vue.js 的模板都是合法的 HTML ,所以能被遵循规范的浏览器和 HTML 解 ...
- 第一章 JacksonUtil 序列化与反序列化属性总结
1.json-lib与Jackson 关于json-lib与Jackson对比总结如下: 1).性能方面,Jackson的处理能力高出Json-lib10倍左右. 2).json-lib已经停止更新, ...
- Jquery最全过滤器总结
不管什么时候,总是有这么些时候:当我们使用jQuery的各种过滤器时,总是有那么几个记不牢,还要搜索一下或者翻翻手册!多少次想总结一下,最终都没总结,现在网上找到一篇总结的不错的,但是排版有点乱,本人 ...
随机推荐
- Vuejs项目的Webpack2构建优化
最近在做的项目因为相对较大(打包有100多个chunk),在build构建的时候速度一直上不去,甚是烦恼.由于用的是vue-cli的webpack2模板,一开始并没有想着要对其进行优化,一直觉得是we ...
- tomcat和servlet关系
https://blog.csdn.net/weixin_30531261/article/details/78574410 图不错:https://www.cnblogs.com/fengli999 ...
- Nginx 下部署 HTTPS 与安全调优
什么是 HTTPS?# HTTPS(全称:Hyper Text Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的 ...
- jQuery插件之ajaxFileUpload[转载]
ajaxFileUpload.js 很多同名的,因为做出来一个很容易. 我用的是这个:https://github.com/carlcarl/AjaxFileUpload 下载地址在这里:http:/ ...
- java 解析office文件 大全
原文地址:http://ansjsun.iteye.com/blog/791142 读取OFFICE文件纯文本 package org.css.resource.businesssoft.search ...
- Dubbo配置优化
来自于:https://blog.csdn.net/youaremoon/article/details/51884644 感谢博主,收藏一下 dubbo作为一个服务治理框架,功能相对比较完善,性能也 ...
- AppScan代理扫描app/H5安全测试(没试过,记录在此)
标签: 1.首先设置AppScan代理,设置如下:
- jquery的load()事件和ajax中load()方法的区别
load事件 当图像加载时,改变 div 元素的文本: $("img").load(function(){ $("div").text("Image ...
- [转] AForge.NET 图像处理类
https://www.nuget.org/packages?q=AForge.NET https://baike.baidu.com/item/AForge.NET/114415?fr=aladdi ...
- LNMP中常见的502错误及处理方法
LNMP配置完成以后,经常遇到502 Bad Gateway的错误提示,究其原因多为2种.下面对这两方面的问题进行分析: 1. 配置方面的错误 配置错误中,或者因为php-fpm找不到路径,或者是权限 ...