Spring Boot中@RequestMapping和@GetMapping返回JSON无缩进如何解决
Spring Boot接口返回JSON格式化缩进配置方案
以下几种方案均可实现返回JSON带缩进格式化的效果:
方案1:全局配置文件配置(推荐)
直接在项目配置文件中添加Jackson序列化缩进配置即可全局生效:
- 若使用
application.properties配置文件,添加如下配置:
spring.jackson.serialization.indent-output=true
- 若使用
application.yml/application.yaml配置文件,添加如下配置:
spring: jackson: serialization: indent-output: true
方案2:单个接口单独配置
如果不需要全局生效,仅需指定接口返回格式化JSON,可以手动调用Jackson的格式化序列化方法:
@RestController @RequestMapping("/") public class FriendResource { // 注入Spring容器托管的ObjectMapper @Autowired private ObjectMapper objectMapper; @GetMapping public ResponseEntity<String> getDude() throws JsonProcessingException { // 使用带默认缩进的序列化器输出JSON String prettyJson = objectMapper.writerWithDefaultPrettyPrinter().writeValueAsString(new Dude()); return ResponseEntity.ok() .contentType(MediaType.APPLICATION_JSON) .body(prettyJson); } }
方案3:代码全局配置Jackson
如果需要通过代码自定义全局Jackson配置,可以注册自定义的ObjectMapper Bean:
import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.SerializationFeature; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Configuration public class JacksonConfig { @Bean public ObjectMapper objectMapper() { return new ObjectMapper() // 开启序列化缩进输出 .enable(SerializationFeature.INDENT_OUTPUT); } }
注意:JSON格式化会增加响应报文体积,建议仅在开发、测试环境开启,生产环境保持默认压缩输出即可。
内容的提问来源于stack exchange,提问作者user14998092
相关产品推荐
相关产品推荐

