SpringBoot FastJson导致循环引用

背景

使用fastjson时出现了循环引用,问题:
文章评论回复时,评论是多,文章是一,典型的一对多和多对一的问题,按照Spring的解释多的一方为维护方,即评论方,在发布评论时,因为评论关联了文章,文章也关联了评论,通过fastjson获取评论数据时,顺带就将文章也返回了,当然文章中的评论也返回了,这样就产生了循环引用的问题,导致的结果就是,后端返回的数据在前端出现大量undefined的JS对象

方案

我们可以通过限定json序列化的范围来避免发生这种情况,具体在一的一方即文章的评论集合属性上限定获取了文章对象后不要再获取文章的评论

实体

cascade = {CascadeType.REMOVE} #去除级联查找关系

在这里插入图片描述

效果

在这里插入图片描述

控制台我们可以看到评论列表的blog对象的引用为空

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Spring Boot是一个基于Spring框架的快速开发Web应用程序的框架,而Fastjson是一个Java语言编写的高性能JSON处理器,它可以将Java对象转换为JSON格式的数据,也可以将JSON格式的数据转换为Java对象。在Spring Boot中使用Fastjson可以方便地处理返回值和请求参数。 以下是在Spring Boot中使用Fastjson的步骤: 1.在pom.xml文件中添加Fastjson的依赖: ```xml <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.62</version> </dependency> ``` 2.在Spring Boot的配置文件application.properties或application.yml中添加以下配置: ```properties spring.http.converters.preferred-json-mapper=fastjson ``` 3.在Controller中使用Fastjson的注解@ResponseBody来处理返回值: ```java import com.alibaba.fastjson.JSONObject; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RestController public class FastjsonController { @RequestMapping("/fastjson") public JSONObject fastjson() { JSONObject jsonObject = new JSONObject(); jsonObject.put("name", "Tom"); jsonObject.put("age", 18); return jsonObject; } } ``` 4.在Controller中使用Fastjson的注解@RequestBody来处理请求参数: ```java import com.alibaba.fastjson.JSONObject; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RestController; @RestController public class FastjsonDemoController { @PostMapping("/request") public JSONObject demo(@RequestBody JSONObject jsonObject) { String userName = jsonObject.getString("userName"); int age = jsonObject.getIntValue("age"); JSONObject response = new JSONObject(); response.put("userName", userName); response.put("age", age); return response; } } ```

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

BirdMan98

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值