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(IteratorBlock.java:159)atfree@H_301_137@marker.core.Environment.visitIteratorBlock(Environment.java:559)atf@H_404_283@reemarker@H_799_301@.core.IteratorBlock.accept(IteratorBlock.java:67@H_12_403@)atfreemarker.core.Environment.visit(Environment.java:312)atfreemarker.core.MixedContent.accept(MixedContent.java:62)atfreemarker.core.Environment.visitByHiddin@H_403_761@gParent(Environment.java:333)atfreemarker.core.IfBlock.accept(IfBlock.java:48)atfreemarker.core.Environment.visit(Environment.java:312)atfreemarker.core.MixedContent.accept(MixedContent.java:62)atfreemarker.core.Environment.visit(Environment.java:@H_679_1301@312)atfreemarker.core.Environment.process(Enviro@H_892_1403@nment.java:290)atfreema@H_404_1447@rker.templat@H_301_1471@e.Template.process(Template.java:312)atorg.apache.@H_403_1577@struts2.dispatcher.DefaultDispatcherErrorHandler.handleErrorInDevMode(DefaultDispatcherErrorHandler.java:99)atorg.apache.struts2.dispatcher.DefaultDispatcherE@H_502_1939@rrorHandler.handleError(DefaultDispatcherErrorHandler.java:57)atorg.apache.struts2.dispatch@H_403_2145@er.Dispatcher.sendError(Dispatcher.java:909)atorg.apache.struts2.dispatcher@H_956_2301@.Dispatcher.serviceAction(Dispatc@H_502_2371@her.java:576)atorg.apache.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_871_3011@e@H_510_3013@r@H_273_3015@(@H_814_3017@A@H_308_3019@pplicationFilterChain.java:235)atorg.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)atorg.apa@H_845_3301@che.catalina.core.StandardWrapperValve.invok@H_494_3403@e(StandardWrapperValve.java:230)atorg.apache.catalina.core.StandardContextValve.invoke(StandardContextVal@H_404_3649@ve.java:175)atorg.apache.catalina.@H_301_3719@core.StandardHostValve.invoke(StandardHostValve.java:128)atorg.apache.catalina.valves.Er@H_301_3919@rorReportValve.invoke(ErrorReportValve.java:104)atorg@H_417_4033@.@H_76_4035@a@H_22_4037@p@H_348_4039@a@H_509_4041@c@H_993_4043@h@H_190_4045@e@H_552_4047@.@H_897_4049@catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)atorg.apache.catalina.connector.CoyoteA@H_663_4301@dapter.service(CoyoteAdapter.java:261)atorg.ap@H_662_4403@ache.coyote.http11.Http11Processor.process@H_502_4491@(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()里面的集合,就是你想要过滤掉的属性的名字。

原文链接:https://www.f2er.com/json/289543.html

猜你在找的Json相关文章