Я использую Spring Boot для возврата данных из репозитория. Я хотел бы отформатировать мой JSON, чтобы он хорошо работал с обработкой Ext JS 'ajax. По сути, я хотел бы включить свойства для обработки success / fail, count и errorMsg вместе со списком данных из репозитория.
Я попытался создать объект ResponseDTO, который я возвращаю из моего Rest Controller .
@RestController
public class AdminController {
private static final Logger logger = LogManager.getLogger(AdminController.class);
@Autowired
private UserService userService;
@Autowired
private SecurityService securityService;
@Autowired
private UserValidator userValidator;
@GetMapping("/searchUsers")
public ResponseDTO searchUsers(String name, String active) {
int activeFlag;
List<User> users;
ResponseDTO resp;
if(active.equals("true")) {
activeFlag = 1;
} else activeFlag=0;
if(StringUtils.isEmpty(name)) {
users= userService.findAllUsers(activeFlag);
} else {
users= userService.findByUsernameActive(name, activeFlag);
}
return new ResponseDTO(users, true);
}
}
Вот мой DTO, который я использую в контроллере:
public class ResponseDTO {
private boolean success;
private int count = 0;
private List<?> values;
public boolean getSuccess() {
return this.success;
}
public void setState(boolean st) {
this.success=st;
}
public int getCount() {
return this.count;
}
public void setCount(int cnt) {
this.count=cnt;
}
public List<?>getValues() {
return this.values;
}
public void setValues(List<?> vals) {
this.values = vals;
}
public ResponseDTO(List<?> items, boolean state) {
this.success = state;
values = items;
this.count = items.size();
}
}
Вот как выглядит JSON, который я получаю обратно:
{
"ResponseDTO": {
"success":true,
"count":2,
"values":[{obj1 } , { obj2}]
}
}
то, что я хотел бы получить, это что-то вроде:
{
"success" : true,
"count" : 2,
"values" [{obj1},{obj2}]
}
Я использую аннотации Spring Boot и Jackson. Я использовал аннотацию, чтобы игнорировать отдельные поля в объектах в массиве результатов, но я не могу найти способ развернуть объект ResponseDTO, чтобы не включать имя класса.