com.alibaba.fastjson.JSONException: syntax error, expect {, actual error, pos 0

stevenjohn 发布于 2013/11/14 15:01
阅读 68K+
收藏 1

@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里面已经修复了此类错误,但是这个.....

加载中
0
s
stevenjohn

引用来自“god_chun”的答案

Hi,遇到同样问题。。。请问解决了吗
没有解决,我也不知道为什么,之前版本里面听说是解决了,但是我这个问题依旧,我也不知道是我用的问题,还是咋回事,我已经@wenshao了,他没回答,后来换成了spring-Jackson了。
0
god_chun
god_chun
Hi,遇到同样问题。。。请问解决了吗
0
阿影
阿影
我也准备换了,后面的几个版本都有很严重的BUG。有 Set 属性的,泛型类型也有问题。
0
上郡刀客
上郡刀客

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

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

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

引用来自“boonbai”的评论

这个使用的就是spring本身的json返回吧。如果非要返回json数据的话,我建议单独使用fastjson组件。改用HttpServletResponse写出json字符串即可。
我肯定是已经手动指定了使用fastjson了,没办法fastjson之前公司出现了好多bug,最近公司内部全部让停用了,都换成了Jackson了
0
b
boonbai
fastjson,本身应该没有什么问题。可能是在使用的时候需要做一些相应的数据适配或者是某些使用的代码引起。如果是本身的fastjsonbug,下载最新版的jar包应该可以解决。Jaskson也可以,不过就是大了点,速度慢点。
0
s
stevenjohn

引用来自“boonbai”的评论

fastjson,本身应该没有什么问题。可能是在使用的时候需要做一些相应的数据适配或者是某些使用的代码引起。如果是本身的fastjsonbug,下载最新版的jar包应该可以解决。Jaskson也可以,不过就是大了点,速度慢点。
因为这个bug在之前版本,温少已经提到早解决了,我用的时候版本,比他修复那个早了七八个版本号了,没时间去研究这问题了
hibernate_jss
hibernate_jss
赞同。。
0
harbinu
harbinu
contentType : "application/json; charset=utf-8",
返回顶部
顶部