Преобразование объекта Java в строку в методе SpringBoot JPA

Я работаю над примером Springboot MySQL (Аналогичный пример). В одном из методов я хочу зарегистрировать данные JSON, но получаю,

com.example.employee.model.Employee@1595ddd2

@RequestMapping(value = "/employees12/{id}", method=RequestMethod.GET)
public Employee getPerson(@PathVariable Long id){
    Employee employee = employeeRepository.findOne(id);
    //String str=employee.toString();
    //System.out.println("string is " + str);
    System.out.println(employee); //print json in logs console
    return employee;
}

return employees; предоставляет данные в формате JSON. Я пробовал toString (), даже это не работает. Любая помощь приветствуется.

@Reimeus: Это неправильная ссылка для дублирования. Думаю, этот вопрос вообще не стоит закрывать. ОП определенно знает, как работают System.out::println и Object::toString. Ему необходимо зарегистрировать исходящий ответ JSON. Пожалуйста, подумайте о повторном открытии вопроса.

Nikolas Charalambidis 24.08.2018 22:32
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
2
1
5 735
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

В методе getPerson () используйте objectMapper.writeValueAsString() для получения JSON объекта сотрудника:

@RequestMapping(value = "/employees12/{id}", method=RequestMethod.GET)
public Employee getPerson(@PathVariable Long id){
    Employee employee = employeeRepository.findOne(id);
    ObjectMapper objectMapper = new ObjectMapper();
    System.out.println(objectMapper.writeValueAsString(employee));
    return employee;
}

Добавление toString() в класс Employee с ObjectMapper от Jackson для сериализации экземпляра Employee. Преимущество переопределения метода toString() в классе Employee заключается в том, что вы можете просто выполнить System.out.println(employee); в любом месте, чтобы получить представление JSON объекта Employee.

 public String toString(){
     String serialized  = "";
        try{
            ObjectMapper objectMapper = new ObjectMapper();
            serialized = objectMapper.writeValueAsString(this);
        }catch(JsonProcessingException jpe){
            jpe.printStackTrace();
        }
    return serialized;
 }
Ответ принят как подходящий

Вы можете использовать writerWithDefaultPrettyPrinter из ObjectMapper. Это обеспечивает красивую печать.

private ObjectMapper mapper = new ObjectMapper();

@RequestMapping(value = "/employees12/{id}", method=RequestMethod.GET)
public Employee getPerson(@PathVariable Long id){
    Employee employee = employeeRepository.findOne(id);
    System.out.println(mapper.writerWithDefaultPrettyPrinter().writeValueAsString(employee));
    return employee;
}

Если вам нужен вывод только в компактном режиме, используйте writeValueAsString.

System.out.println(mapper.writeValueAsString(employee));

Спасибо за решение, все работает как положено. Я не являюсь парнем, специализирующимся на Java, и последние пару часов искал решение. Я не знал об этой концепции ObjectMapper PrettyPrinter.

John Seen 24.08.2018 22:56

Вы можете использовать библиотеку google gson:

    @Override
public String toString() {
    return new GsonBuilder().setPrettyPrinting().create().toJson(this);
}

или отражение с использованием apache lang

user666 08.03.2019 10:19

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