У меня есть контроллер отдыха, который возвращает 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;
}




Вы можете попробовать вот так:
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);