实体集合转JSON遇到的问题
来源:互联网 发布:centos开启wifi 编辑:程序博客网 时间:2024/06/10 11:08
最近在给IOS的写接口,发现跟ITOO写的接口不一样,ITOO是写好方法,然后把dll文件给他们就行了。而这个是他们需要JSON串,写完以后转成JSON串直接给他们,其实对JSON串也不陌生但是也不是很熟悉,没怎么很深的用过。但是其实挺简单的,只要明白JSON串的结构就好。
但是最近在用的时候就遇到了问题,转的过程中老是失败!!后来经过查找原来是因为我用了hibernate来操作数据库,而json-lib在处理这类结果对象时存在了异常。如下图这个异常。。
Struts Problem Report
Struts has detectedan unhandled exception:
Messages:
FreeMarker template error!
Methodpublic java.lang.Stringorg.apache.commons.lang.exception.NestableRuntimeException.getMessage(int)threw an exception when invoked on net.sf.json.JSONException:java.lang.reflect.InvocationTargetException
The problematic instruction:
----------
==> ${msgs[0][0]} [on line 76, column 25 inorg/apache/struts2/dispatcher/error.ftl]
----------
Javabacktrace forprogrammers:
----------
freemarker.template.TemplateModelException: Method public java.lang.Stringorg.apache.commons.lang.exception.NestableRuntimeException.getMessage(int)threw an exception when invoked on net.sf.json.JSONException:java.lang.reflect.InvocationTargetException
atfreemarker.ext.beans.SimpleMethodModel.exec(SimpleMethodModel.java:130)
at freemarker.ext.beans.SimpleMethodModel.get(SimpleMethodModel.java:138)
atfreemarker.core.DynamicKeyName.dealWithNumericalKey(DynamicKeyName.java:111)
at freemarker.core.DynamicKeyName._getAsTemplateModel(DynamicKeyName.java:90)
atfreemarker.core.Expression.getAsTemplateModel(Expression.java:89)
at freemarker.core.Expression.getStringValue(Expression.java:93)
atfreemarker.core.DollarVariable.accept(DollarVariable.java:76)
at freemarker.core.Environment.visit(Environment.java:209)
atfreemarker.core.MixedContent.accept(MixedContent.java:92)
atfreemarker.core.Environment.visit(Environment.java:209)
atfreemarker.core.IfBlock.accept(IfBlock.java:82)
atfreemarker.core.Environment.visit(Environment.java:209)
atfreemarker.core.IfBlock.accept(IfBlock.java:82)
atfreemarker.core.Environment.visit(Environment.java:209)
at freemarker.core.MixedContent.accept(MixedContent.java:92)
atfreemarker.core.Environment.visit(Environment.java:209)
atfreemarker.core.Environment.process(Environment.java:189)
atfreemarker.template.Template.process(Template.java:237)
atorg.apache.struts2.dispatcher.Dispatcher.sendError(Dispatcher.java:748)
atorg.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:505)
atorg.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77)
atorg.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:91)
atorg.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
atorg.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
atorg.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:198)
atorg.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
atorg.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
atorg.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
atorg.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
atorg.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
atorg.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
atorg.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
atorg.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
atorg.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:857)
atorg.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
atorg.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
atjava.lang.Thread.run(Thread.java:662)
Caused by: java.lang.NullPointerException
atfreemarker.ext.beans.SimpleMemberModel.unwrapArguments(SimpleMemberModel.java:85)
atfreemarker.ext.beans.SimpleMethodModel.exec(SimpleMethodModel.java:106)
... 37 more
一大串真心的看不懂啊,不过找到关键字一搜就可以明白错误在哪儿呢。但是我却查找了半天。。。
解决方案:
原先转json串只是这样就可以了。
JSONArray arvert = JSONArray.fromObject(实体集合);json =arvert.toString();
现在需要再加上两句话。
JsonConfigjsonConfig=new JsonConfig(); jsonConfig.setExcludes(newString[]{"handler","hibernateLazyInitializer"}); JSONArrayarvert = JSONArray.fromObject实体集合,jsonConfig); json = arvert.toString();
实体转json也可以用这种办法解决。
还依稀记得,从刚开始接触这个项目的时候,因为Java没有怎么接触过,遇到问题都是摸不着头脑,后来遇到的问题渐渐的多了,发现越来越不恐惧了,因为知道总有解决办法,而且解决的越来越快,越来越熟练,这就像是一个成长的过程吧。
- 实体集合转JSON遇到的问题
- 实体嵌套集合转Json
- JAVA 实体对象数转JSON数据碰到的问题
- Java实体类转Json出现的一些问题
- js,JSON转字符串遇到的问题
- Hibenrate实体关联中遇到的问题
- json <--->List集合,实体类 之间的相互转换
- bitmap遇到的问题集合
- Realm-json遇到的问题
- 上传List集合 (List<实体类>转json)
- json的字符串转实体对象
- JSON转实体的一个小坑
- ADO.NET 实体建模器中遇到的问题
- 使用ADO.net 实体数据模型遇到的问题
- struts2+hibernate用实体类做外键时遇到的一个问题
- 使用Webview显示html文本遇到的字符实体问题
- 析JSON数组生成对象实体集合
- JAVA 集合 JSON 数组 实体互换
- Thunderbird - Error Copying to Sent Folder (拷贝到已发送文件夹出错)
- iOS App Launch Option(附点击推送操作)
- 压力容器PVelite 2015+换热器HTRI 6.0+三维工厂设计PDMS 12.1.1+管道应力分析CAESAR.II 2014送教程
- Android性能优化典范(三)
- 数字转换成中文人民币大写
- 实体集合转JSON遇到的问题
- python基础知识
- 华为OJ--阿姆斯特朗数
- Java字符串的10大热点问题盘点
- android去掉代码中的log日志代码。
- 实习心得
- SSH之文件上传
- 高性能Mysql主从架构的复制原理及配置详解
- 购物车设计思想之最佳