Я работаю над примером 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 (), даже это не работает. Любая помощь приветствуется.




В методе 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.
Вы можете использовать библиотеку google gson:
@Override
public String toString() {
return new GsonBuilder().setPrettyPrinting().create().toJson(this);
}
или отражение с использованием apache lang
@Reimeus: Это неправильная ссылка для дублирования. Думаю, этот вопрос вообще не стоит закрывать. ОП определенно знает, как работают
System.out::printlnиObject::toString. Ему необходимо зарегистрировать исходящий ответ JSON. Пожалуйста, подумайте о повторном открытии вопроса.