Ошибка в возвращении ответа JSON в REST API Java

Пытаюсь написать свое первое REST API, но столкнулся c рядом неудач.
Что я делаю не так, помогите плиз.

Задача состоит в том, что GET /seats возвращает информацию в формате JSON о строках, столбцах и доступных местах в зале: Пример:

{
    "total_rows": 5,
    "total_columns": 6,
    "available_seats": [
    {
        "row": 1,
        "column": 1
    },
    ........
    {
        "row": 5,
        "column": 5
    }
}

Моя реализация логики:

import org.json.simple.JSONObject;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class Seats {
    private int totalRows;
    private int totalColumns;

    public int getTotalRows() {
        return totalRows;
    }

    public void setTotalRows(int totalRows) {
        this.totalRows = totalRows;
    }

    public int getTotalColumns() {
        return totalColumns;
    }

    public void setTotalColumns(int totalColumns) {
        this.totalColumns = totalColumns;
    }

    public Seats(int totalRows, int totalColumns) {
        this.totalRows = totalRows;
        this.totalColumns = totalColumns;
    }

    Map<String, Object> responseObj = new HashMap<String, Object>();
    List<Seats> seatsList = new ArrayList<>();

     JSONObject seat() {
        for (int i = 1; i <= getTotalRows(); i++) {
            for (int j = 1; j <= getTotalColumns(); j++) {

                seatsList.add(new Seats(i, j));
                responseObj.put("available_seats", seatsList);


            }
        }
        responseObj.put("total_rows", totalRows);
        responseObj.put("total_columns", totalColumns);
         return new JSONObject(responseObj);
    }
}

Контроллер

@RestController
@RequestMapping("/seats")
class Controller {
    
    Seats result = new Seats(5, 6);

    @GetMapping
    public Seats getSeats() {
        return result;
    }
}

В общем totalы я получил, а как еще вывести остальную часть, там где массивы?


Ответы (1 шт):

Автор решения: Alex Rudenko

Скорее всего, в данном случае для разработки REST API используется Spring/SpringBoot, а значит можно применять библиотеку Jackson для работы с JSON. Тогда просто следует определить POJO классы следующим образом:

public class Seats {
    @JsonProperty("total_rows")
    private int totalRows;

    @JsonProperty("total_columns")
    private int totalColumns;

    @JsonProperty("available_seats")
    private List<Seat> availableSeats;

// геттеры/сеттеры/конструктор(ы)
    public Seats(int rows, int cols) {
        this.totalRows = rows;
        this.totalColumns = cols;

        this.availableSeats = new ArrayList<>();
        for (int r = 1; r <= totalRows; r++) {
            for (int c = 1; c <= totalColumns; c++) {
                availableSeats.add(new Seat(r, c));
            }
        }
    }
}
public class Seat {
    private int row;
    private int column;

// геттеры/сеттеры/конструктор(ы)
    public Seat(int r, int c) {
        this.row = r;
        this.column = c;
    }
}
→ Ссылка