FastJson处理json数据时遇到一个问题

CSDN第一篇博客。希望能在此记录我的学习过程和收获,如果能帮助到大家,也会很开心。

正文开始。今天用FastJson的时候遇到一个错误,报错如下:

Exception in thread "main" com.alibaba.fastjson.JSONException: syntax error, expect {, actual ], pos 39
  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_User_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:323)
  at com.jadyer.main.JSONDemoDetail.main(JSONDemoDetail.java:18)

乍一看,以为服务器传来的json数据有问题,打印后用jsonpaser解析发现并没有错,那就是程序出错了。

查找实体类,字段一一对应没问题。再看报错,语法错误,看来是fastjson根据实体类解析的时候出问题了。

惯例找度娘,顺利解决。PS:我很懒,消除错误后不想再改回去拿log打印的error,所以直接用了http://blog.csdn.net/jadyer/article/details/24395015?utm_source=tuicool&utm_medium=referral点击打开链接这位同学的errorlog,侵删。

总结一下错误原因,实体类是用GsonFormat直接生成的,该实体类中有另一个实体类作为属性存在,json数据中这个作为属性存在的实体类使用了中括号,而fastjson识别到json数据中该实体类使用了中括号,而不是应该使用的大括号,于是报错了。

----------------------------------------------

忘记说解决方案了。把用到中括号的字段改成List<T> t,修改相应的getter、setter,OK。

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值