mysql - 如何使用 Spring boot 和 MYSQL 为多级菜单列表创建嵌套 JSON?
问题描述
我一直在尝试使用 MySQL 和 Spring boot 创建多级嵌套 JSON。
我将需要这个 JSON,以便以后可以使用 jQuery 创建 HTML 菜单。
但我目前正在努力创建我的多级嵌套 JSON。
基本上,我有一个如下所示的 MYSQL 数据库:
id categoryItem parrent
1 car 0
2 red car 1
3 blue car 1
4 bike 0
5 yellow bike 4
列 post_parent 是将它们链接在一起的列。
我尝试使用以下 Spring 引导代码,但 JSON 输出错误。
我的实体类是这样的:
@Table(name = "category_item")
@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
public class CategoryItem implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@NotNull
@Column(name = "name", nullable = false)
private String name;
@Column(name = "description")
private String description;
@Column(name = "fa_icon")
private String faIcon;
@ManyToOne
@JsonIgnoreProperties("categoryItems")
private CategoryItem parrent;
}
我将需要一个像这样的结构的多级嵌套 JSON:
{
"id": 1,
"name": "car",
"categoryItem": [
{
"id": 2,
"name": "red car"
},
{
"id": 3,
"name": "blue car"
}
]
}
我该怎么办!?请帮忙!
解决方案
您需要使其成为双向关系:
@Table(name = "category_item")
@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
public class CategoryItem implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@NotNull
@Column(name = "name", nullable = false)
private String name;
@Column(name = "description")
private String description;
@Column(name = "fa_icon")
private String faIcon;
@OneToMany(mappedBy = "parent")
private Set<CategoryItem> categoryItems;
@ManyToOne
@JsonIgnoreProperties("categoryItems")
private CategoryItem parent;
}
推荐阅读
- android - 使用配置文件发布移动(React Native)工件
- python - 将变量传递到xpath selenium,Python
- java - 转换为 Scala 的 Java 泛型类型不接受超类本身
- c# - “CS1513:} 预期”错误
- c++ - Linux 中的点窗口 (C/C++)
- java - 图像未共享到应用程序
- regex - 使用正则表达式处理 linux shell 脚本字符串
- powershell - powershell处理命令输出
- r - 与 dplyr、tidyverse 和 broom 的相关矩阵 - P 值矩阵
- r - 散点图“if (counts[i] == 0) next 中的错误:参数的长度为零”