java 如何在RestController中通过注解缩进输出JSON?

dced5bon  于 2023-03-11  发布在  Java
关注(0)|答案(1)|浏览(146)

我需要漂亮的输出JSON。是否有一个注解的RestController,将有助于做到这一点?这是一个Spring Boot 应用程序,产生= MediaType.APPLICATION_JSON_VALUE在@RequestMapping。
我在application.yml中找到了一种配置方法

jackson:
  serialization:
    indent-output: true

然而,这个解决方案将这个规则强加给了整个项目,而我只想对一个类这样做。另外,我认为@JsonSerialize可以帮助我,但是我不能设置一个漂亮的打印注解

qmelpv7a

qmelpv7a1#

假设您有一个简单的Person类,它有两个属性nameage

public class Person {

   private String name;
   private int age;

   public Person(String name, int age) {
       this.name = name;
       this.age = age;
   }

   public String getName() {
       return name;
   }

   public int getAge() {
       return age;
   }
}

假设您有一个spring RestController,它以JSON形式返回一个Person对象:

@RestController
public class MyRestController {

   @GetMapping("/person")
   public Person getPerson() {
      return new Person("John Doe", 30);
   }
}

默认情况下,JSON输出将是紧凑的且不缩进:

{"name":"John Doe","age":30}

要打印出漂亮的JSON输出,可以在Person类上使用@JsonFormat注解:

@JsonFormat(shape = JsonFormat.Shape.OBJECT)
public class Person {
    //...
}

注解的shape属性指定了序列化JSON的形状,在本例中,我们将其设置为JsonFormat.Shape.OBJECT,以指示输出应该格式化为JSON对象。
现在,当您调用/Person端点时,JSON输出将被漂亮地打印出来

{
  "name" : "John Doe",
  "age" : 30
}

如您所见,JSON输出现在缩进了,更容易阅读。

相关问题