问题

JSON.toJSONString(this) 出错:

com.alibaba.fastjson.JSONException: write javaBean error, fastjson version 1.2.48, class com.biz.dao.FiniteStateMachineDAO, fieldName: finiteStateMachineDAO, write javaBean error, fastjson version 1.2.48, class com.alibaba.druid.pool.DruidDataSource, fieldName : dataSource, write javaBean error, fastjson version 1.2.48, class com.mysql.jdbc.JDBC4Connection, fieldName : connection, write javaBean error, fastjson version 1.2.48, class com.mysql.jdbc.JDBC4DatabaseMetaData, fieldName : metaData, Positioned Update not supported.        at com.alibaba.fastjson.serializer.JavaBeanSerializer.write(JavaBeanSerializer.java:465)        at com.alibaba.fastjson.serializer.JavaBeanSerializer.write(JavaBeanSerializer.java:120)        at com.alibaba.fastjson.serializer.ASMSerializer_136_PetaDataImportHandler.write(Unknown Source)        at com.alibaba.fastjson.serializer.JSONSerializer.write(JSONSerializer.java:281)
at com.alibaba.fastjson.JSON.toJSONString(JSON.java:673)        
at com.alibaba.fastjson.JSON.toJSONString(JSON.java:611)
at com.alibaba.fastjson.JSON.toJSONString(JSON.java:576)

排查

查看本类,发现有一个数据库 DAO 字段

@Resource
private FiniteStateMachineDAO finiteStateMachineDAO;

数据库访问使用的是 hibernate,参考此文:
https://stackoverflow.com/questions/15916912/json-java-sql-sqlexception-positioned-update-not-supported

It seems like a Hibernate lazy loading problem.

If the object you want to format is some kind of hibernate model classes, and configure those classes to lazy load, this problem will happen.

The reason is that hibernate use cglib to dynamic generate this model classes(using subclass way to generate class), those sub-classes contain new attributes like "hibernateLazyInitializer". Then JSONObject will also try to serialize these new attributes. Then the exception happens.

You can try to add the following code to fix this problem:

JsonConfig cfg = new JsonConfig();
cfg.setExcludes(new String[]{"handler","hibernateLazyInitializer"});
JSONObject json = JSONObject.fromObject(obj,cfg);

解决

将 DAO 字段在 JSON serialize 中去除

/*

* 第一种:在字段前加注解。

* @JSONField(serialize=false)

* private String name;

*/

/*

* 第二种:在对字段前面加transient。

* private transient  String name;

*/

fastjson toJSONString 出错 Positioned Update not supported相关推荐

  1. fastjson.toJSONString字段排序

    由于fastjson.toJSONString默认按字符字母排列顺序输出的,在有些特殊场景下可能不满足我们的要求,需要定制. 官方文档中提到自定义序列化有三中方式,需要1.1.42以上版本才支持: & ...

  2. fastJson toJSONString注意点

    fastJosn是阿里爸爸推出一款高性能序列化工具,号称最快的json序列化工具.不过好像也就那样,在量比较大的时候优势才会明显.单次序列化时间还是会达到几十毫秒的级别. Fastjson is a ...

  3. fastjson:toJSONString,值为null的键值对没有了

    1.解决:使用SerializerFeature指定序列化方式 String jsonString =  JSONObject.toJSONString(jsonObject, SerializerF ...

  4. 使用classwizard时提示clw文件出错 (cannot update the classwizard database)

    VC++中,自动生成的文件中, .clw ClassWizard信息文件,实际上是INI文件的格式, 有时候ClassWizard出问题,手工修改CLW文件可以解决. 如果此文件不存在的话,每次用Cl ...

  5. FastJson稍微使用不当就会导致StackOverflow

    GitHub 9.4k Star 的Java工程师成神之路 ,不来了解一下吗? GitHub 9.4k Star 的Java工程师成神之路 ,真的不来了解一下吗? GitHub 9.4k Star 的 ...

  6. 生成JSON数据--fastjson(阿里)方法

    fastjson(阿里)方法生成JSON数据: 与Gson类似,创建相应类,再使用JSON.toJSONString()添加对象 要求:生成如下JSON数据 1.{"age":3, ...

  7. 火狐linux ubuntu16.04,Ubuntu 16.04 安装 Firefox 48.0 beta版

    Mozilla Firefox浏览器测试版48.0最近由Mozilla团队发布.一个显着的特点是对恶意软件的下载,WebRTC技术的改进,URL栏中结果面板的新设计,还有更多的增强的保护. Mozil ...

  8. SSM整合(2): spring 与 mybatis 整合

    在进行完spring与springmvc整合之后, 继续 spring与mybatis的整合. 既然是操作数据库, 那必然不能缺少了连接属性 一. db.properties jdbc.driver= ...

  9. 基于Nacos配置中心实现Spring Cloud Gateway的动态路由管理

    前面我们了解过了Sentinel 网关流量控制之Spring Cloud Gateway实战,今天带给大家是基于Nacos配置中心实现Spring Cloud Gateway的动态路由管理. 1.为什 ...

最新文章

  1. Gzip 服务端压缩数据
  2. 《Spring 5 官方文档》26. JMS(二)
  3. Windows 显示环境变量
  4. Python中使用wordcloud生成漂亮的中文词云
  5. 北斗导航 | 基于RTK的GNSS与多源融合定位技术发展与挑战
  6. boost::shared_lock相关的测试程序
  7. linux如何利用命令保存文件,如何在Linux中将命令输出保存到文件?
  8. date用法linux,date用法心得
  9. Spring data jpa Specification查询关于日期的范围搜索
  10. 若不能细水长流地书写内心的温柔,那轰轰烈烈的一幕一幕不过是日后回忆自己爱无能的证据罢了。...
  11. java生成四位数字验证码_简单的随机生成4个数字验证码的实现
  12. 昂达v811升级到4.22d之后shell可以使用root权限操控文件系统
  13. 自然语言在公路交通各建设阶段运用
  14. 基于R语言的分位数回归(quantile regression)
  15. signature=71820b070a82d48c44cc938baccfcfc9,基于集成神经网络的离线手写签名鉴别方法
  16. Unity3D数字孪生开发笔记——软件基础篇
  17. Office 2016 首要事项一点就停止工作
  18. 04 Nifty自定义带图片的下拉框
  19. TOOD: Task-aligned One-stage Object Detection
  20. m语言 东华his_M语言

热门文章

  1. 微软收购暴雪计划遭拒/ Edge被曝泄露浏览记录/ 微信小程序可用数字人民币...今日更多新鲜事在此...
  2. Android Fragment完全解析,关于碎片你所需知道的一切
  3. 谈谈数据库连接池的原理
  4. 浅谈数据库连接池原理及优势
  5. Java爬虫(四)通过屏幕录制顺序实现目标输入和点击
  6. Spring Cloud Alibaba参考文档
  7. 最新面试题汇总(附带答案)【建议看看】
  8. bugku post
  9. i712700h怎么样 i7 12700h参数 i712700h评测
  10. SQL_聚合函数使用总结