Преобразовать целое число в JSON - PullRequest
0 голосов
/ 18 октября 2019

Я играю в SpringBoot и хочу подсчитать количество пользователей в моей базе данных.

UserRepository

public interface UserRepository extends JpaRepository<User, Long> {
    @Query(value = "select COUNT(*) from user", nativeQuery = true)
    Integer findAllActiveUsers();
}

UserService

    public Integer amountOfUsersInDB() {
        return userRepository.findAllActiveUsers();
    }

UserController

    @GetMapping("/myusers")
    public ResponseEntity amountOfUsers() {
        System.out.println(userService.amountOfUsersInDB());
        return ResponseEntity.ok(userService.amountOfUsersInDB());
    }

Когда я делаю вызов http get, он возвращает количество пользователей в моей базе данных как целое число. Как я могу сделать так, чтобы оно возвращало значение в виде JSON, чтобы позже я смогло воспроизвести его на своем интерфейсе?

1 Ответ

1 голос
/ 18 октября 2019

Когда у вас есть что-то вроде этого:

@GetMapping(value = "/count", produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<Integer> getCount() {
    Integer count = 1;
    return ResponseEntity.ok(count);
}

У вас будет следующая полезная нагрузка ответа, которая, кстати, является действительным JSON:

1

Теперь, если вы хотите создать объект JSON, вы можете использовать Map<String, Object> для представления полезной нагрузки:

@GetMapping(value = "/count", produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<Map<String, Object>> getCount() {

    Integer count = 1;

    Map<String, Object> payload = new HashMap<>();
    payload.put("count", count);

    return ResponseEntity.ok(payload);
}

Или вы можете определить класс, представляющий полезную нагрузку, создать и экземпляр такого класса иприсвойте значение полю count:

@Data
public class CountPayload {
    private Integer count;
}
@GetMapping(value = "/count", produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<CountPayload> getCount() {

    Integer count = 1;

    CountPayload payload = new CountPayload();
    payload.setCount(count);

    return ResponseEntity.ok(payload);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...