Java com.alibaba.fastjson.JSONObject转换json字符串格式异常 can not cast to JSONObject.
正常运行的项目在更新后突然报错另一个代码,仔细一查发现是字符串转JSON格式报错,这个之前都是正常运行的,紧急查找原因......
报错问题:
1 com.alibaba.fastjson.JSONException: can not cast to JSONObject. 2 at com.alibaba.fastjson.JSON.parseObject(JSON.java:260) 3 at com.wx.printtickets.print.controller.printController.printBtw(printController.java:176) 4 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 5 at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 6 at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 7 at java.lang.reflect.Method.invoke(Method.java:498) 8 at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:190) 9 at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:138) 10 at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:105) 11 at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:878) 12 at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:792) 13 at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) 14 at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1040) 15 at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:943) 16 at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006) 17 at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909) 18 at javax.servlet.http.HttpServlet.service(HttpServlet.java:652) 19 at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883) 20 at javax.servlet.http.HttpServlet.service(HttpServlet.java:733) 21 at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231) 22 at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) 23 at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) 24 at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) 25 at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) 26 at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) 27 at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) 28 at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) 29 at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) 30 at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) 31 at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) 32 at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) 33 at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) 34 at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) 35 at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) 36 at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) 37 at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) 38 at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202) 39 at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97) 40 at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:542) 41 at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:143) 42 at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92) 43 at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78) 44 at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343) 45 at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:374) 46 at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65) 47 at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:888) 48 at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1597) 49 at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) 50 at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) 51 at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) 52 at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) 53 at java.lang.Thread.run(Thread.java:748) 54 Caused by: java.lang.ClassCastException: java.lang.String cannot be cast to com.alibaba.fastjson.JSONObject 55 at com.alibaba.fastjson.JSON.parseObject(JSON.java:258) 56 ... 51 more
百度一番之后说是我这边字符串转义次数太多了导致格式异常,入参字符串:"{\"fileName\":\"CCTXT\",\"data\":\"{\\\"deptName\\\":\\\"一车间\\\",\\\"fileName\\\":\\\"TXT\\\",,\\\"useTime\\\":\\\"50分钟\\\",\\\"createUser\\\":\\\"T466\\\",\\\"eqpId\\\":\\\"卧式070\\\"}\",\"ipname\":\"10.20.167.122\",\"ipaddr\":\"10.20.167.122\"}"
解决方案:str = JSON.parse(str).toString();
如上,直接重新编译入参就行了,为了这一句花了半天时间,记录一下 o(╥﹏╥)o

浙公网安备 33010602011771号