如何使用 Spring boot 和 MYSQL 为多级菜单列表创建嵌套 JSON?
Posted
技术标签:
【中文标题】如何使用 Spring boot 和 MYSQL 为多级菜单列表创建嵌套 JSON?【英文标题】:How to create nested JSON for the multi-level menu list using Spring boot and MYSQL? 【发布时间】:2019-10-09 22:58:25 【问题描述】:我一直在尝试使用 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"
]
我该怎么办!?请帮忙!
【问题讨论】:
【参考方案1】:你需要让它成为双向关系:
@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;
【讨论】:
我试过了,但它不起作用。很多人建议使用 DTO。但我对此并不陌生。 DTO如何处理? 您需要扩展“我已经尝试过,但它不起作用”。如果你想要一个答案。以上是关于如何使用 Spring boot 和 MYSQL 为多级菜单列表创建嵌套 JSON?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Spring Boot 中使用 MySql 数据库查询?
如何使用 MySQL 在 Spring Boot REST API 中放置和获取任何格式的 JSON 对象?
如何从 html 表单中获取“日期和时间”输入并使用 Spring Boot 保存到 MySQL 数据库中?
如何在 Spring Boot / Spring Data 中为 Amazon RDS Mysql 启用 SSL?