开发者社区> 问答> 正文

com.alibaba.fastjson.JSONException: synt?报错

@wenshao 你好,想跟你请教个问题:

  @RequestMapping(value="/update/{id}", method=RequestMethod.PUT) 
    public @ResponseBody BaseVo update(@PathVariable String id,@RequestBody UpdateRequest updateRequest){ 
     BaseVo baseVo=new BaseVo();
//     UpdateRequest updateRequest=new UpdateRequest();
//     try {
//      updateRequest=(UpdateRequest)BeanBind.bind(UpdateRequest.class, request);
//  } catch (Exception e1) {
//   e1.printStackTrace();
//  }
     UserRest rest=new UserRest();
     rest.setId(Integer.valueOf(id));
     rest.setAddress(updateRequest.getAddress());
     rest.setEmail(updateRequest.getEmail());
     rest.setPassWord(updateRequest.getPassWord());
     rest.setUserName(updateRequest.getUserName());
     rest.setCreateTime(new java.util.Date());
     rest.setUpdateTime(new java.util.Date());
     boolean flag=false;
     try {
   flag=this.userService.updateUserRest(rest);
  } catch (Exception e) {
   e.printStackTrace();
  }
     if(flag){
      baseVo.setStatus("success");
      baseVo.setMessage("");
     }else{
      baseVo.setStatus("failure");
      baseVo.setMessage("");
     }
        return baseVo; 
    } 

 

测试这个方法的时候,直接报错:

 2013-11-14 14:59:54 org.apache.catalina.core.StandardWrapperValve invoke
严重: Servlet.service() for servlet [spring-mvc] in context with path [/springmvcrest] threw exception [Request processing failed; nested exception is com.alibaba.fastjson.JSONException: syntax error, expect {, actual error, pos 0] with root cause
com.alibaba.fastjson.JSONException: syntax error, expect {, actual error, pos 0
 at com.alibaba.fastjson.parser.deserializer.JavaBeanDeserializer.deserialze(JavaBeanDeserializer.java:212)
 at com.alibaba.fastjson.parser.deserializer.ASMJavaBeanDeserializer.parseRest(ASMJavaBeanDeserializer.java:96)
 at Fastjson_ASM_UpdateRequest_1.deserialze(Unknown Source)
 at com.alibaba.fastjson.parser.DefaultJSONParser.parseObject(DefaultJSONParser.java:513)
 at com.alibaba.fastjson.JSON.parseObject(JSON.java:244)
 at com.alibaba.fastjson.JSON.parseObject(JSON.java:220)
 at com.alibaba.fastjson.JSON.parseObject(JSON.java:179)
 at com.alibaba.fastjson.JSON.parseObject(JSON.java:327)
 at com.abin.lee.rest.util.json.fastjson.FastjsonHttpMessageConverter.readInternal(FastjsonHttpMessageConverter.java:47)
 at org.springframework.http.converter.AbstractHttpMessageConverter.read(AbstractHttpMessageConverter.java:153)
 at org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodArgumentResolver.readWithMessageConverters(AbstractMessageConverterMethodArgumentResolver.java:120)
 at org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodArgumentResolver.readWithMessageConverters(AbstractMessageConverterMethodArgumentResolver.java:91)
 at org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.resolveArgument(RequestResponseBodyMethodProcessor.java:71)
 at org.springframework.web.method.support.HandlerMethodArgumentResolverComposite.resolveArgument(HandlerMethodArgumentResolverComposite.java:75)
 at org.springframework.web.method.support.InvocableHandlerMethod.getMethodArgumentValues(InvocableHandlerMethod.java:156)
 at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:117)
 at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:96)
 at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:617)
 at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:578)
 at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:80)
 at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:923)
 at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:852)
 at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:882)
 at org.springframework.web.servlet.FrameworkServlet.doPut(FrameworkServlet.java:800)
 at javax.servlet.http.HttpServlet.service(HttpServlet.java:644)
 at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
 at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
 at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
 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:243)
 at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
 at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
 at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
 at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
 at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
 at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
 at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:929)
 at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
 at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
 at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1002)
 at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:585)
 at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)
 at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
 at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
 at java.lang.Thread.run(Thread.java:619)

 

 

我使用的是fastjson ,1.1.36,前面看你说是在1.1.27里面已经修复了此类错误,但是这个.....

展开
收起
爱吃鱼的程序员 2020-06-22 14:28:43 2440 0
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB

    引用来自“god_chun”的答案

    Hi,遇到同样问题。。。请问解决了吗Hi,遇到同样问题。。。请问解决了吗我也准备换了,后面的几个版本都有很严重的BUG。有Set属性的,泛型类型也有问题。

    SerializerFeature.WriteClassName和Set不能共存啊,一旦用了SerializerFeature.WriteClassName,Set就会被当成JavaBean解析了:

    atcom.alibaba.fastjson.parser.deserializer.JavaBeanDeserializer.deserialze(JavaBeanDeserializer.java:212)

    谁解决了,我也碰到了这个使用的就是spring本身的json返回吧。如果非要返回json数据的话,我建议单独使用fastjson组件。改用HttpServletResponse写出json字符串即可。

    引用来自“boonbai”的评论

    这个使用的就是spring本身的json返回吧。如果非要返回json数据的话,我建议单独使用fastjson组件。改用HttpServletResponse写出json字符串即可。fastjson,本身应该没有什么问题。可能是在使用的时候需要做一些相应的数据适配或者是某些使用的代码引起。如果是本身的fastjsonbug,下载最新版的jar包应该可以解决。Jaskson也可以,不过就是大了点,速度慢点。

    引用来自“boonbai”的评论

    fastjson,本身应该没有什么问题。可能是在使用的时候需要做一些相应的数据适配或者是某些使用的代码引起。如果是本身的fastjsonbug,下载最新版的jar包应该可以解决。Jaskson也可以,不过就是大了点,速度慢点。赞同。。contentType:"application/json;charset=utf-8",
    2020-06-22 14:28:58
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载