Ошибка в возвращении ответа 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;
}
}