Как настроить ответы JSON в Spring Boot? - PullRequest
0 голосов
/ 26 сентября 2019

Я новичок в Java и Spring Boot.Я создаю REST-сервис, используя Spring Boot.У меня есть объект, который содержит только ссылки на другие объекты, как показано ниже:

@Entity
@Table(name = "table_xyz")
public class RolesAccessEntity {

    @Id
    @Column(name = "id", columnDefinition = "serial")
    private int id;

    @ManyToOne
    @JoinColumn(name = "role_id", referencedColumnName = "id")
    private RoleEntity roleEntity;

    @ManyToOne
    @JoinColumn(name = "page_id", referencedColumnName = "id")
    private PagesEntity pagesEntity;

    @ManyToOne
    @JoinColumn(name="column_id", referencedColumnName = "id")
    private ColumnsEntity columnsEntity;
}

Я должен получить весь контент и вернуть ответ REST.Когда я делаю это, помещая POJO в ObjectNode, используя Джексона, я получаю ответ как показано ниже:

{
    "success": true,
    "values": [
        {
            "id": 32,
            "roleEntity": {
                "id": 15,
                "roleName": "Role1"
            },
            "pagesEntity": {
                "id": 1,
                "pageName": "Page1"
            },
            "columnsEntity": {
                "id": 1,
                "columnName": "Column1"
            }
        },
        {
            "id": 33,
            "roleEntity": {
                "id": 15,
                "roleName": "Role1"
            },
            "pagesEntity": {
                "id": 1,
                "pageName": "Page1"
            },
            "columnsEntity": {
                "id": 2,
                "columnName": "Column2"
            }
        },
        {
            "id": 34,
            "roleEntity": {
                "id": 15,
                "roleName": "Role1"
            },
            "pagesEntity": {
                "id": 1,
                "pageName": "Page1"
            },
            "columnsEntity": {
                "id": 3,
                "columnName": "Column3"
            }
        }
    ]
}

Но как мне сгруппировать вещи?Например:

{
    "success": true,
    "values": 
    [
            {
            "id": 32,
            "roleEntity": {
            "role_id": 15,
            "roleName": "Role1",
            "values": [
                {"page_id": 1,
                "page_name": "Page1",
                "values": [
                        {
                        "column_id": 1,
                        "column_name": "Column1"
                        },
                        {
                        "column_id": 2,
                        "column_name": "Column2"
                        }
                        ]
                },
                {"page_id": 2,
                "page_name": "Page2",
                "values": [
                {
                "column_id": 3,
                "column_name": "Column1"
                },
                {
                "column_id": 4,
                "column_name": "Column2"
                }
                ]
                }
                ]}}]}

Я могу написать хэш-карту в сервисе и группе, написав много вложенного кода, чтобы получить это.Но не очень похоже на Java-иш.Есть ли способ, которым я мог бы написать еще один POJO, который даст мне этот результат?

1 Ответ

0 голосов
/ 26 сентября 2019

Создайте двухслойный: один - модель MySQL POJO, а другой - модель (DTO), которая используется для доставки ответа для REST.когда вы извлекаете данные из модели MySQL POJO и используете класс mapper для преобразования данных из модели MySQL POJO в модель DTO и отправки модели DTO в качестве ответа.В модели DTO мы можем использовать аннотации, которые помогают проектировать ответ JSON.

Например: переменная LocalDataTime предоставит вам подробный формат ответа, для которого мы используем сериализатор (аннотацию) для его форматирования.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...