Json数据转化(Circle异常)
来源:互联网 发布:2017大数据发展报告 编辑:程序博客网 时间:2024/06/07 01:00
import net.sf.json.JSONArray;
import net.sf.json.JsonConfig;
import net.sf.json.util.PropertyFilter;
public class Object2Json {
/**
* 将对象(集合)转化为json对象
* @param obj 要转换的对象
* @param ignoreAttr 要忽略的对象
* @return
*/
public static JSONArray toJsonArray(Object obj,final String ignoreAttr){
JsonConfig config = new JsonConfig();
config.setJsonPropertyFilter(new PropertyFilter() {
@Override
public boolean apply(Object arg0, String arg1, Object arg2) {
if (arg1.equals(ignoreAttr)) {
return true;
}else{
return false;
}
}
});
JSONArray jsonArray = JSONArray.fromObject(obj,config);
return jsonArray;
}
}
原因分析在解析bean时,出现死循环调用,即多个bean之间出现了相互调用。导致出现死循环,无法解析json对象。
仔细查了一下发现是hibernate主外键关联的错,发现JSONArray根据判断取得的不同类型调用相应的方法,也就是说主外键自身关联的是个死循环,那怎么才能不让他出现这种情况呢,应该有个配置的参数后者终止循环的地方吧,查看发现,jsonConfig,呵呵,config应该是配置参数吧,参看JsonConfig看见PropertyFilter ,PropertyFilter 是一个interface,代码如下:
也就是说我可以通过这个方法过滤掉List里的相应属性,只要让它返回true就可过滤掉,……,有点悬……我们重写一下这个方法:
cfg.setJsonPropertyFilter(new PropertyFilter()
{
public boolean apply(Object source, Stringname, Object value) { if(name.equals("contactGroups")||name.equals("contactGroupPersons"))
{ return true }
else {
return false; }
} });
将hibernate产生的实体bean中的contactGroups和contactGroupPersons过滤掉就OK了!
然后调用JSONArray.fromObject(mychildren,cfg); mychildren是hibernate返回的list。
- Json数据转化(Circle异常)
- json数据转化格式
- json parser 数据转化
- json数据转化
- json-lib对象转化为json数据抛net.sf.json.JSONException: va.lang.reflect.InvocationTargetException异常
- JSON数据转化成模型
- DataSet转化成JSON数据
- Scala将数据转化JSON
- 【javascript】Json字符串转化为Json数据
- json解析数据 再讲数据转化成json
- JS解析json数据(如何将json字符串转化为数组)
- JS解析json数据(如何将json字符串转化为数组)
- JS解析json数据(如何将json字符串转化为数组)
- JS解析json数据(如何将json字符串转化为数组)
- JS解析json数据(如何将json字符串转化为数组)
- JS解析json数据(如何将json字符串转化为数组)
- JS解析json数据(如何将json字符串转化为数组)
- JS解析json数据(如何将json字符串转化为数组)
- java代码效率优化
- js面向对象
- 状态管理-cookie
- JS(十七)jquery
- CD使用dispatch_group_notify、dispatch_group_enter、dispatch_group_leave处理多线程同步操作
- Json数据转化(Circle异常)
- 8.15iO流
- hdu 6118 最小费用可行流(注意与最大流的区别)
- HashMap的工作原理
- Win10 Hyper-V虚拟机两种连网方式
- 【jzoj5279】【NOIP提高组模拟A组8.15】【香港记者】
- NXOpen创建block,设置颜色,遍历边,倒角
- jQuery dom
- Yii 启动空白,写入权限不足