`
levyer
  • 浏览: 8394 次
  • 性别: Icon_minigender_1
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

利用JsonConfig消除JSON转换出现双向关联循环问题

 
阅读更多
今天在利用JSONArray.fromObject把对象转成JSON的时候,总是报如下错误:
2011-10-10 13:52:25 org.apache.catalina.core.StandardWrapperValve invoke
严重: Servlet.service() for servlet default threw exception
java.lang.IllegalStateException
at org.apache.catalina.connector.ResponseFacade.sendError(ResponseFacade.java:407)
at org.apache.struts2.dispatcher.Dispatcher.sendError(Dispatcher.java:801)
at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:519)
at org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77)
at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:91)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:198)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:857)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
at java.lang.Thread.run(Thread.java:619)


百思不得其解,把对象一一遍历打印出后,发现原来是多个多想之间存在双向关联,再转成JSON的过程中,出现死循环。如下

@OneToMany(mappedBy="customer",cascade=CascadeType.PERSIST,fetch=FetchType.LAZY)
	private List<OrderManage> orderManageList; //关于订单管理 by 2011-09-19]

	@OneToMany(mappedBy="consumersCust",fetch=FetchType.EAGER)
	private Set<Consumers> consumers = new HashSet<Consumers>();//商机



利用JsonConfig解决剔除掉关联字段,解决了此问题。

		JsonConfig config = new JsonConfig();   
	    //排除关联对象属性,排除日期两个属性   
	    config.setExcludes(new String[]{"birthday","idcard"});  
	    config.setJsonPropertyFilter(new PropertyFilter(){ 
	    	public boolean apply(Object source, String name, Object value) { 
	    	if(name.equals("linkMans")||name.equals("consumers")||name.equals("orderManageList")) { 
	    		return true; 
	    	} else { 
	    		return false; 
	    	} 
	    	} 
	    }); 
              //JsonConfig 还提供了JSON转换功能,也能方便
	    config.registerJsonValueProcessor(java.util.Date.class, new JsonValueProcessorDate());
分享到:
评论

相关推荐

    JsonConfig:基于json的配置框架

    配置文件JsonConfig 是一个简单的配置框架,基于 json 和 .NET Framework 4.0+ 中可用的动态类型入门在您的项目中,添加对 JsonConfig.dll 的引用使用 json 格式的配置将名为“app.json.config”的文件添加到您的...

    JSON net.sf.json jar包

    JSON net.sf.json 依赖的jar包 亲测可用 一次导入所有jar包

    java jsonto对象互转

    * 将java对象转换成json字符串,并设定日期格式 * * @param javaObj * 要转换的java对象 * @param dataFormat * 制定的日期格式 * @return */ public static String objectToJson(Object javaObj, String ...

    JsonConfig:使用JSON和C#4.0动态功能的简单配置库

    JsonConfig自述文件关于JsonConfig是一个易于使用的配置库,它允许C#/。NET应用程序使用基于JSON的配置文件,而不必使用繁琐的web.config / application.config xml文件。 它基于JsonFX和C#4.0动态功能。 允许将...

    swift-JSONConfig-一个Swift3JSON配置读取库

    JSON Config - 一个Swift 3 JSON配置读取库。读取JSON文件从服务器端配置

    ezmorph-1.0.6.jar

    使用json时候将会用到的一个jar包,发现这个包在网上提供的比较少.缺少这个包可能导致Could not initialize class net.sf.json.JsonConfig 使用json时候将会用到的一个jar包,发现这个包在网上提供的比较少.缺少这个...

    net.sf.json依赖包

    在用到net.sf.json的时候有时候会因为缺少依赖库而报错,此时可以试试这个包

    改良版的json-lib2.4

    大家都知道jsonlib2.4之后有了属性过滤的功能,就是当把一个bean转成json的时候能指定哪些属性输出哪些不输出,不过代码很难看,如下 JsonConfig config = new JsonConfig(); config.setJsonPropertyFilter(new ...

    java后端返回json给前端

    java后端返回json给前端,包含对象JsonObject,JsonConfig,JsonArray.

    json-lib-2.1 2.2 2.3 2.4-jdk15

    JSONArray.fromObject(map)报错:Could not initialize class net.sf.json.JsonConfig。ireport 需要高于2.1版本的包。于是就找了这些包。最后2.2.2适合

    JSONConfig:抽象重新配置文件类,交替xml,同时支持json文件

    JSONConfig:抽象重新配置文件类,交替xml,同时支持json文件

    JSONObject(net.sf.json)jar包和依赖包

    通过JSONObject json = ... 进入此方法后会继续调用fromObject(Object, JsonConfig)的重载方法,在此重载方法中会通过instanceOf判断待转换的Object对象是否是枚举、注解等类型,这些特殊类型会有特别的判断方法。

    json所用到的jar包

    json开发所需要的jar包,fastjson-1.2.2.jar,fastjson-1.2.2-sources.jar,json.jar。不用到处找了

    java解析json

    java解析json字符串。 commons-beanutils-1.9.0 commons-collections-3.2.1 commons-lang-2.6 commons-logging-1.1.3 ezmorph-1.0.6 json-lib-2.4-jdk15 demo: package com; import java.util.ArrayList;...

    JsonConfigUtil

    去除死循环,解决StackOverflowError错误

    ezmorph.jar v1.0.6免费版.zip

    ezmorph.jar包是在使用json时候将会用到jar包,缺少这个包可能导致Could not initialize class net.sf.json.JsonConfig,给大家提供ezmorph-1.0.6.jar,有需要的赶快下载吧! ezmorph.jar基本简介 EZMorph是一个...

    parseConfig:Golang写的json配置文件解析工具

    ├── config.go├── config.jsonconfig.json内容{ "name" : "akkuman", "urls" : ["xx.com","ww.com"], "info" : { "qq" : "123456", "weixin": "123456" }}该库取出来的都是类型为interface{}的数据,如需取出...

    jsonex:Java对象序列化器和反序列化器为JSON格式。 专注于配置友好性,任意对象序列化和紧凑的JSON格式

    如果您也是JSON的拥护者,但讨厌JSON标准的限制,使其很难用作配置格式,但仍然不想将JSON放弃给YAML(JSON很好,为什么需要另一个非常难看的标记语言)。 您可以尝试使用该库。 该库专注于很好地解决以下问题: ...

    springboot-json-config

    springboot-json-configconfig.json mysql Redis动态配置 不通过spring默认配置,并使用通用mapper(tk.mapper)

    json传值以及ajax接收详解

    一开始进入公司,做起项目来比较不知所措,现在一个月过去了,越来越得心应手,下面是json向前端传值以及前端ajax接收,给自己记下也分享给大家。 这是两个类型不同的json与ajax的数据交互(集合、类对象) ...

Global site tag (gtag.js) - Google Analytics