JsonConfig的jsonConfig.setExcludes的用法

前端之家收集整理的这篇文章主要介绍了JsonConfig的jsonConfig.setExcludes的用法前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

JsonConfig的jsonConfig.setExcludes的用法

之前写一个小东西,当用JSONArray.fromObject()方法转一个对象集合时,因为对象中存在一对多的关系,一直抛出异常

严重: Error executing FreeMarker template
FreeMarker template error:
Java method “org.apache.commons.lang.exception.NestableRuntimeException.getMessage(int)” threw an exception when invoked on net.sf.json.JSONException object “net.sf.json.JSONException: org.hibernate.LazyInitializationException: Failed to lazily initialize a collection of role: cn.zzuli.app.domain.User.positions,no session or session was closed”; see cause exception in the Java stack trace.


FTL stack trace (“~” means nesting-related):

- Failed at: ${msg[0]?html} [in template “org/apache/struts2/dispatcher/error.ftl” at line 68,column 29]

Java stack trace (for programmers):

freemarker.core._TemplateModelException: [… Exception message was already printed; see it above …]
at freemarker.ext.beans._MethodUtil.newInvocationTemplateModelException(_MethodUtil.java:311)
at freemarker.ext.beans._MethodUtil.newInvocationTemplateModelException(_MethodUtil.java:275)
at freemarker.ext.beans.SimpleMethodModel.exec(SimpleMethodModel.java:80)
at freemarker.ext.beans.SimpleMethodModel.get(SimpleMethodModel.java:86)
at freemarker.core.DynamicKeyName.dealWithNumericalKey(DynamicKeyName.java:104)
at freemarker.core.DynamicKeyName._eval(DynamicKeyName.java:69)
at freemarker.core.Expression.eval(Expression.java:78)
at freemarker.core.Expression.evalAndCoerceToString(Expression.java:82)
at freemarker.core.BuiltInForString._eval(BuiltInForString.java:26)
at freemarker.core.Expression.eval(Expression.java:78)
at freemarker.core.Expression.evalAndCoerceToString(Expression.java:82)
at freemarker.core.DollarVariable.accept(DollarVariable.java:40)
at freemarker.core.Environment.visit(Environment.java:312)
at freemarker.core.MixedContent.accept(MixedContent.java:62)
at freemarker.core.Environment.visitByHiddingParent(Environment.java:333)
at freemarker.core.IfBlock.accept(IfBlock.java:48)
at freemarker.core.Environment.visitByHiddingParent(Environment.java:333)
at freemarker.core.IteratorBlock Context.runLoop(Itera@H_404_91@torBlock.java:159)atfreemarker.core.Environment.visitIteratorBlock(Environment.java:559)atfreemarker@H_400_301@.core.IteratorBlock.accept(IteratorBlock.java:67@H_247_403@)atfreemarker.core.Environment.visit(Environment.java:312)atfreemarker.core.MixedContent.accept(MixedContent.java:62)atfreemarker.core.Environment.visitByHiddingParen@H_404_777@t(Environment.java:333)atfreemarker.core.IfBlock.accept(IfBlock.java:48)atfreemarker.core.Environment.visit(Environmen@H_301_1033@t.java:312)atfreemarker.core.MixedContent.accept(MixedContent.java:62)atfreemarker.core.Environment.visit(Environment.java:@H_848_1301@312)atfreemarker.core.Environment.process(Enviro@H_393_1403@nment.java:290)atfreemarker.template.Template.process(Template.java:312)atorg.apache.st@H_403_1581@ruts2.dispatcher.DefaultDispatcherErrorHandler.handleErrorInDevMode(DefaultDispatcherErrorHandler.java:99)atorg.apache.s@H_502_1859@truts2.dispatcher.DefaultDispatcherErrorHandler.handleError(@H_301_1999@DefaultDispatcherErrorHandler.java:57)atorg.apache.struts2.dispatcher.Dispatcher.sendError(Dispatcher.java:909)atorg.apache.struts2.dispatcher@H_119_2301@.Dispatcher.serviceAction(Dispatcher.java:576)atorg.apa@H_403_2413@che.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:81)atorg.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:99)atorg.apache.catalina.core.ApplicationFilterChain.internalDoFilt@H_832_3011@e@H_263_3013@r@H_81_3015@(@H_347_3017@A@H_553_3019@pplicationFilterChain.java:235)atorg.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)atorg.apa@H_452_3301@che.catalina.core.StandardWrapperValve.in@H_301_3397@vok@H_60_3403@e(StandardWrapperValve.java:230)atorg.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)atorg.apache.@H_301_3697@catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)atorg.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104)atorg@H_475_4033@.@H_175_4035@a@H_366_4037@p@H_891_4039@a@H_350_4041@c@H_204_4043@h@H_548_4045@e@H_508_4047@.@H_24_4049@catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)atorg.apache.catalina.connector.CoyoteA@H_962_4301@dapter.service(CoyoteAdapter.java:261)atorg.ap@H_594_4403@ache.coyote.http11.Http11Processor.process(Http11Processor.java:844)atorg.apache.coyote.http11.Http11Protocol Http11ConnectionHandler.process(Http11Protocol.java:581)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Thread.java:619)
Caused by: java.lang.NullPointerException
at freemarker.ext.beans.SimpleMethod.unwrapArguments(SimpleMethod.java:53)
at freemarker.ext.beans.SimpleMethodModel.exec(SimpleMethodModel.java:72)
… 44 more

然后通过询问别人,知道了JsonConfig的jsonConfig.setExcludes()这个方法,简单的说,这个就是过滤掉不需要的属性,因此就可以用这个方法过滤掉对象中存在的一对多的关系

List userList = userService.findAll();
JsonConfig jsonConfig = new JsonConfig();
jsonConfig.setExcludes(new String[]{“area”});
JSON json = JSONSerializer.toJSON(userList,jsonConfig);

setExcludes()里面的集合,就是你想要过滤掉的属性的名字。

猜你在找的Json相关文章