【发布时间】:2019-08-03 10:05:24
【问题描述】:
我有返回如下格式的对象列表(不漂亮)。
{"data":[{"id":1,"firstName":"Bill","lastName":"Johnson"}]
我希望它看起来像这样(漂亮)。
{
"data":[{
"id":1,"
firstName":"Bill",
"lastName":"Johnson"
}]
}
这是我的方法签名,以及我对服务的调用以查询数据库以及将 json 打印到屏幕的返回。
public @ResponseBody ResponseEntity<ResponseData<List<NameSearchDTO>>> getInfo(@PathVariable String code, @PathVariable String idType)
ResponseData<List<NameSearchDTO>> response = new ResponseData<>();
List<NameSearchDTO> results = officeService.getByCode(code, idType);
if (!results.isEmpty()) {
response.setData(results);
response.setStatus(Enum.SUCCESS.getDescription());
response.setMessage(Enum.STATUS_SUCCESS.getDescription());
return new ResponseEntity<>(response, HttpStatus.OK);
}
ResponseData 类实现了可序列化。这是否使它成为“真正的”JSON,因为我没有使用 Jackson 或任何其他 JSON 库?
如何将响应传递给下面的 ObjectMapper 以使其美观?
ObjectMapper jacksonMapper = new ObjectMapper();
jacksonMapper.configure(SerializationFeature.INDENT_OUTPUT, true);
或者我需要创建某种 JSONHelper 类吗?
响应数据类
public class ResponseData <E> implements Serializable{
private E data;
private String status;
private String message;
private boolean hasValidationError = false;
public E getData() {
return data;
}
public void setData(E data) {
this.data = data;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public boolean getHasValidationError(){
return hasValidationError;
}
public void setHasValidationError(boolean hasValidationError){
this.hasValidationError = hasValidationError;
}
}
【问题讨论】:
-
见Pretty print JSON output of Spring Boot Actuator endpoints和Spring MVC 一般情况下,您可以自定义您的
JacksonObjectMapper,但这取决于您使用的Spring的版本、配置、库。Serialisable接口不是必需的,它不会使它成为trueJSON。
标签: java json jackson spring-data-jpa gson