我有一个返回如下格式的对象列表(不漂亮)。
{"data":[{"id":1,"firstName":"Bill","lastName":"Johnson"}]
字符串
我希望它能像这样(漂亮)。
{
"data":[{
"id":1,"
firstName":"Bill",
"lastName":"Johnson"
}]
}
型
这是我的方法签名,沿着我对服务的调用以查询DB和将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类实现了Serializable。如果我没有使用Jackson或任何其他JSON库,这是否使它成为“真”JSON?
如何将响应传递给下面的ObjectMapper以使其美观?
ObjectMapper jacksonMapper = new ObjectMapper();
jacksonMapper.configure(SerializationFeature.INDENT_OUTPUT, true);
型
或者我需要创建某种JSONHelper类?
ResponseData类
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;
}
}
型
6条答案
按热度按时间mlnl4t2r1#
我认为美化json字符串的最好方法是使用Jackson:
字符串
voase2hg2#
您可以定义
MappingJacksonHttpMessageConverter
(不需要Sping Boot )Jackson2ObjectMapperBuilder
Bean@Primary
注解的简单ObjectMapper
Bean对于第一个解决方案,您需要实现
WebMvcConfigurer
接口(skip这一个,如果你在Spring Boot )
字符串
关键是这条线
型
它实际上操作底层的
ObjectMapper
配置。型
第二个简单一点
型
第三个更简单,
型
第四种方法只包括使用configuration属性
型
fhity93d3#
我相信你正在寻找Gson的漂亮打印功能。因为你已经用gson标记了你的问题,我想如果你使用库,那就没问题了。Mkyong有一个关于漂亮打印Here的很棒的教程。
本教程的基本内容是:
字符串
wtzytmuj4#
不需要导入一堆新的东西。只有系统可能会抱怨(如果有的话)。但如果你已经在使用Jackson,并希望使用Map器->只需使用“readValue”或“writeValue”的权利?
此链接解释了很多方法来做到这一点:Jackson Examples
删除结果赋值并使用Mapper进行直接转换
字符串
然后将其添加到结果返回中。(添加容器类似乎有点笨拙,但我不假装知道您的要求)。
型
ubbxdtey5#
您标记了
gson
,因此您可以使用此库来显示.json
文件:import org.json.JSONObject
个字符串
https://github.com/google/gson
gab6jxml6#
可以从JSONObject使用toString(int indentFactor)