资讯专栏INFORMATION COLUMN

FastJson转换字符串引用相同对象产生的错误

focusj / 992人阅读

摘要:然后,断点看一下转换的内容,找到看到这里突然想起这个好像前面有遇到过,下面简单说下产生问题的原因这代表了是一种引用,它是在转换字符串的时候出现的,在引用了同一对象时出现。

问题产生

最开始问题是在C层的单元测试中产生的:

报错提示我们说:引用瞬态值,引用之前应该保存一下。

问题解决

1.这好说,一看是minMeasureScaleUnit没有保存,那么保存一下就行了。然而没有用。

2.既然不起作用,那么说明这是别的方式引起的。断点调试一下。

发现在模拟发起http请求之前,minMeasureScaleUnit的值是存在的,并且已经保存,但是传到方法中的时候就出问题了,minMeasureScaleUnit成一个空对象了。这就说明在转换成json字符串的时候出现问题了。

然后,断点看一下转换的内容,找到minMeasureScaleUnit

看到这里突然想起这个好像前面有遇到过,下面简单说下产生问题的原因:

$ref这代表了是一种引用,它是FastJson在转换Json字符串的时候出现的,在引用了同一对象时出现。
$”代表根对象,所以后面就是告诉我们引用了哪个对象。
当后台接收这种形式的Json对象的时候,并没有将引用再替换回来,所以minMeasureScaleUnit就不是我们最开始的对象了,也就出现了最开始的没有保存的问题。
解决办法

FastJson已经提供给我们了解决办法,在转换的时候,添加一个参数SerializerFeature.DisableCircularReferenceDetect,禁用引用就行了:

String jsonObject = JSON.toJSONString(newNonMandatoryInstrument, SerializerFeature.DisableCircularReferenceDetect);
总结

这个问题前面的时候遇到过,但是没有及时的复习,导致这次解决问题的时候又用了不少的时间。

参考链接:
https://github.com/json-schem...
https://blog.csdn.net/wxwzy73...

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/76848.html

相关文章

  • fastjson 重复引用和循环引用问题

    数据传输使用json格式再方便不过了。fastjson 由阿里巴巴那伙人使用Java语言编写,号称最快的JSON库前两天遇到一个问题 后台的数据转化为json字符串后发送到前台出现了$ref字样的东西,后来明白了这是引用,在传输的数据中出现相同的对象时,fastjson默认开启引用检测将相同的对象写成引用的形式.说到引用分为两种,重复引用和循环引用 重复引用 指一个对象重复出现多次 循环引用 指你...

    zeyu 评论0 收藏0
  • Android 使用fastjson找不到fastjson包问题解决方法

    摘要:但是将导入工程后,在使用时会出现等错误消息。初步认为是与自带的冲突。再运行工程,这个错误不再出现了,奇迹般的没问题了。我的理解是这样,不知道对不对,欢迎大侠指正。工程中下默认的是,而则应该是。所以按照该文的解决方法,更改就好了。 JSON解析库有很多,诸如Jackson,Json-lib,org.json,Gson和fastjson等,但是fastjson以其解析速度最快而脱颖而出。详...

    hiYoHoo 评论0 收藏0
  • fastjson转换json时,碰到那些首字母大小写转换坑!

    摘要:某年某月的某一天,本汪在某个奇葩的公司,接手了某个奇葩的项目,遇到了一些奇葩的事情,就掉进关于做转换时,那些关于首字符大小写的坑。坑首字符小写,第二个字符大写的键名这个坑与相关,严格来说,应该是挖的坑。 某年某月的某一天,本汪在某个奇葩的公司,接手了某个奇葩的项目,遇到了一些奇葩的事情,就掉进关于fastjson做bean to json转换时,那些关于首字符大小写的坑。 这个奇葩项目...

    tyheist 评论0 收藏0
  • 于一次JSON格式错误 之 手把手带你走一波FastJSON对象转成JSON符串流程

    摘要:而我现在直接返回的是对象。跟进去方法,在最后调用方法将值付给和再回到前面的重写方法最后返回转换好的字符串。到这里整个转换流程就已经结束了。 一、前言 最近老大说要新增一个试用广告的功能,我巴拉巴拉的从之前推送广告那里将代码cv过来,然后跟老大说搞定了!过一会老大说返回的json格式不对!于是乎我瞧了瞧: { adsArea1:{ adsMaterials:[ ...

    leiyi 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<