Отображение json в произвольном формате с помощью пружинной опоры

У меня есть контроллер отдыха, который возвращает JSON в каком-то формате, но я хочу, чтобы вывод JSON был в другом формате. Чтобы реализовать то же самое, я использую Spring REST. Я разместил все классы моделей и контроллеров ниже. Мой вопрос: что я могу сделать с получить ожидаемый ответ?

ФАКТИЧЕСКИЙ JSON

[
{
    "name": "CategoryName1",
    "sub": [
        {
            "name": "SubCategory1"
        },
        {
            "name": "SubCategory2"
        }
    ]
},
{
    "name": "CategoryName2",
    "sub": [
        {
            "name": "SubCategory3"
        },
        {
            "name": "SubCategory4"
        }
    ]
}

]

ОЖИДАЕМЫЙ JSON

{
    "CategoryName1": ["SubCategory1", "SubCategory2"],
    "CategoryName2": ["SubCategory1", "SubCategory2"]
}

Категория

public class Category{

public String name;
public List<Subcategory> sub;
public List<Subcategory> getSub() {
    return sub;
}

public void setSub(List<Subcategory> sub) {
    this.sub = sub;
}

public Category(String name) {
    super();
    this.name = name;
}

}

Подкатегория

public class Subcategory{

public String name;

public Subcategory(String name) {
    super();
    this.name = name;
}

}

Контроллер

@RequestMapping(value = "/dropdown", method = RequestMethod.GET, produces = "application/json")
public @ResponseBody List<Category> dropdown() {
    Subcategory SubCategory1 = new  Subcategory("SubCategory1");
    Subcategory SubCategory2 = new  Subcategory("SubCategory2");
    Subcategory SubCategory3 = new  Subcategory("SubCategory3"); 
    Subcategory SubCategory4 = new  Subcategory("SubCategory4"); 

    Category CategoryName1 = new Category("CategoryName1");
    Category CategoryName2 = new Category("CategoryName2");

    List<Subcategory> subList = new ArrayList<Subcategory>();
    subList.add(SubCategory1);
    subList.add(SubCategory2);
    List<Subcategory> subList2 = new ArrayList<Subcategory>();
    subList2.add(SubCategory3);
    subList2.add(SubCategory4);

    CategoryName1.setSub(subList);
    CategoryName2.setSub(subList2);

    List<Category> cat = new ArrayList<Category>();
    cat.add(CategoryName1);
    cat.add(CategoryName2);

    return cat;
}
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
0
121
1

Ответы 1

Вы можете попробовать вот так:

public class Category {
    private Map<String, List<String>> response = new HashMap<>();
    Category(Map<String, List<String>> response){
    this.response = response;
   }
}

Использование: заполнить данные объектом категории и вернуться из API отдыха.

private Map<String, List<String>> response = new HashMap<>();
 List<String> list = new ArrayList<>();
 list.add("SubCategory1");
 list.add("SubCategory2");
 response.put("CategoryName1", list);
 response.put("CategoryName2", list);
 Category category = new Category(response);

Другие вопросы по теме