在编写测试代码实现一个组织架构树的功能时,部门的parent部门没有显示,出现了json解析异常错误
[{“r e f " : " ref":"ref":"[0]”}] [{“r e f " : " ref":"ref":"[1]”}]

[
{"detail":"O","id":"11111","name":"网络科技公司",
"parentEntranceGuardList":[]],
{"detail":"1","id":"11113","name":"网络部",
"parentEntranceGuardList":[{"$ref":"$[0]"}],"parentId":"11111"},{"detail":"2","id":"11114","name":"网络信息安全部",
"parentEntranceGuardList": [{"$ref":"$[1]"}],"parentId":"11113"}
]

出现r e f : " ref: "ref:"[0]"的原因 多个元素持有同一个引用。是因为循环引用对象重复,对象的hashcode是一样的,使用toString显示不同,但是用json就解析错误了
解决方案
1.取消FastJson的循环引用的检查:
SerializerFeature.DisableCircularReferenceDetect

JsONObiect.toJSONString(quardVoList.SerializerFeature.DisablecircularReferenceDetect)

也可以在项目拦截配置里加入全局禁用循环引用
但是有可能会导致StackOverflowError异常。
2. 加在字段上面 禁用循环引用

@JSONField(serialzeFeatures = {SerializerFeature.DisableCircularReferenceDetect})

3.通过对象拷贝,将对象的属性值复制新的对象中。

BeanUtils.copyProperties (old,new);

使用后 成功显示

[{"detail":"O","id":"11111","name":"网络科技公司","parentEntranceGuardList":[]},
{"detail":"1","id":"11113","name":"网络部",
"parentEntranceGuardList":[{"detail":"O","id": "11111","name":"网络科技公司","parentEntranceGuardList": []}],"parentId":"11111"}
,{"detail":"2","id":"11114","name":"网络信息安全部",
"parentEntranceGuardList": [{"detail":"1","id": "11113","name": "网络部",
"parentEntranceGuardList": [{"detail":"O","id":"11111","name":"网络科技公司","parentEntranceGuardList": [1}],""parentId":"11113"}]
}]

json解析异常显示{“$ref“:“$[0]“}的更多相关文章

  1. json解析异常 - net.sf.json.JSONException: java.lang.reflect.InvocationTargetException

    注:在项目中, 我使用原生的ajax请求数据的时候, JSONObject没能帮我解析, 当却不给我报错, 我是在junit单元测试中测试的时候, 发现的.发现好多时候, 特别是通过ajax请求, 不 ...

  2. 阿里巴巴 fastjson-1.2.12.jar json解析异常java.lang.ClassFormatError: Invalid method Code length 66865 in class file com/alibaba/fastjson/serializer/ASMSerializer_6_UserKdlb

    承接上篇:fastjson反序列化LocalDateTime失败的问题java.time.format.DateTimeParseException: Text '2019-05-24 13:52:1 ...

  3. 常用json解析库比较及选择 fastjson & gson

    一.常用json解析库比较及选择 1.简介 fastjson和gson是目前比较常用的json解析库,并且现在我们项目代码中,也在使用这两个解析库. fastjson 是由阿里开发的,号称是处理jso ...

  4. Cocos2d-x3.0 Json解析

    2dx3.0下一个JSON解析库官员以及集成.我们参考一下吧OK. JSON文件hello.json内容 {"pets":["dog","cat&qu ...

  5. Json 网络传递解析异常

    在项目中碰到一个bug,A项目请求B项目,获取到的Json无法解析,B项目封装的Json,在项目内部可以正常解析,问题并不是Json 解析的错误,而是实体Bean中有数组类型的字段;解决办法就是对封装 ...

  6. .Net Core 3.0原生Json解析器

    微软官方博客中描述了为什么构造了全新的Json解析器而不是继续使用行业准则Json.Net 微软博客地址:https://devblogs.microsoft.com/dotnet/try-the-n ...

  7. JSON解析实例——使用Json-lib

    JSON解析实例——使用Json-lib Json-lib下载及使用 本文介绍用一个类库进行JSON解析. 工具下载地址:http://sourceforge.net/projects/json-li ...

  8. 在Json解析过程中,我为什么用object1.optInt ,和 object1.optString

    今天在做Json解析的时候,出现了一段代码没执行的问题,于是找了一下原因: 1.原代码是:   发现 红色的一句 没有执行,查看控制台发现了异常 2.修复bug ,正确的代码为        3.总结 ...

  9. 一起写一个JSON解析器

    [本篇博文会介绍JSON解析的原理与实现,并一步一步写出来一个简单但实用的JSON解析器,项目地址:SimpleJSON.希望通过这篇博文,能让我们以后与JSON打交道时更加得心应手.由于个人水平有限 ...

  10. android json解析及简单例子

    JSON的定义: 一种轻量级的数据交换格式,具有良好的可读和便于快速编写的特性.业内主流技术为其提供了完整的解决方案(有点类似于正则表达式 ,获得了当今大部分语言的支持),从而可以在不同平台间进行数据 ...

随机推荐

  1. 实验八-Web部署

    进入华为云中购置的虚拟机 配置openEuler cd /etc/yum.repos.d vi openEuler_x86_64.repo 安装LAMP 在shell中 通过下面命令安装Apache: ...

  2. Ansys经验之:杨氏模量的本质概念理解——仿真在线工作记录

    Ansys经验之:什么是杨氏模量? 这是我见到的很多来培训的结构力学仿真人员的困惑,始终不能只管理解,但又是一个入门的重要概念. 本质:杨氏模量=应力/应变,即单位应变的应力.那什么叫单位应变呢,也很 ...

  3. pod进阶

    一.Lifecycle 官网:https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/ 通过前面的分享,关于pod是什么相信看 ...

  4. mysql-开启日志记录功能

    开启日志记录功能 -- 开启功能 SET GLOBAL general_log = ON; -- 保存到文件 SET GLOBAL log_output = 'file'; 查看日志内容 -- 查看日 ...

  5. What is Weight Lifting?

    Weight lifting is the process of lifting items of great mass in order to increase the muscle size an ...

  6. bind、call、apply区别

    bind.call.apply都是用来改变函数内部this指向的方法,使用上仅有细微差别 一.代码 function person(p1, p2, p3) { console.log('this: ' ...

  7. Mac 环境下 编译 spring 源码

    环境:macos idea jdk1.8 首先,在 spring.io的 git 地址 上下载下来源码后,执行里面的 gradlew命令,一般只要网络没有问题,都是可以成功的 然后,看显示的 Welc ...

  8. 什么是Markdown

    什么是markdown? Markdown是一种轻量级标记语言,它允许人们使用已读一些的纯文本格式编写文档,然后转换成有效的XHTML(或者HTML)文档.这种语言吸收了很多在电子邮件中已有的纯文本标 ...

  9. springboot--配置格式文件

    修改端口号的三种方法 1.server.port = 80 2.新建application.yml文件. 3.新建application.yaml文件. 配置文件加载顺序: 当三个文件都存在时prop ...

  10. 王树森Transformer学习笔记

    目录 Transformer Attention结构 Self-Attention结构 Multi-head Self-Attention BERT:Bidirectional Encoder Rep ...