Java 및 Spring Boot에서 Jackson으로 JSON을 예쁘게 인쇄하기

Jackson은 Java 및 Spring Boot에서 직렬화 및 역직렬화 작업을 위한 가장 일반적인 라이브러리 중 하나이며 주로 POJO와 JSON 간의 구문 분석 및 변환에 사용됩니다.

하지만 Jackson과 함께 작업한 경우 기본적으로 예쁜 인쇄가 뚜렷하게 부족하다는 것을 알 수 있습니다.

{Task 1=In_Progress, Task 2=Done, Task 3=Planned}

이 짧은 자습서에서는 표준 Java 및 Spring Boot에서 Jackson을 사용하여 JSON을 예쁘게 인쇄하는 방법을 배웁니다.

우리는 JSON 문자열과 JSON 문자열로 변환된 POJO로 작업할 것입니다. 이것들은 다르게 동작하기 때문입니다:

public class Book {
    private String title;
    private String author;
    private int releaseYear;

    public Book(String title, String author, int releaseYear) {
        this.title = title;
        this.author = author;
        this.releaseYear = releaseYear;
    }
    

인스턴스화하자 Book 인스턴스 및 입력을 위한 문자열:

String inputString = "{n" +
        ""Task 1" : "In_Progress",n" +
        ""Task 2" : "Done",n" +
        ""Task 3" : "Planned"n" +
        "}";

Book book = new Book("Our Mathematical Universe", "Max Tegmark", 2014);

Jackson Once로 JSON을 예쁘게 인쇄하기

전역 인쇄 플래그를 설정하는 대신 단일 호출로 한 번만 예쁘게 인쇄하려면 간단히 다음을 사용할 수 있습니다. writerWithDefaultPrettyPrinter() 값을 문자열로 쓰기 전에 호출:

ObjectMapper mapper = new ObjectMapper();

Object jsonString = mapper.readValue(inputString, Object.class);
String indentedString = mapper.writerWithDefaultPrettyPrinter()
                              .writeValueAsString(jsonString);
        
        
System.out.println(jsonString);
System.out.println(indentedString);

입력 문자열은 (JSON-to-Object)에서 읽었고 이 객체의 값은 pretty-printing(Object-to-JSON)을 사용하여 문자열로 다시 작성되었습니다.

{Task 1=In_Progress, Task 2=Done, Task 3=Planned}

{
  "Task 1" : "In_Progress",
  "Task 2" : "Done",
  "Task 3" : "Planned"
}

또는 사용할 때 readTree(), 결과 JsonNode 있다 toPrettyString() 문자열을 예쁘게 인쇄된 JSON으로 변환하는 아주 간단한 방법으로 사용되는 함수:

ObjectMapper mapper = new ObjectMapper();
Object jsonString = mapper.readTree(inputString).toPrettyString();
System.out.println(jsonString);

이것은 입력 JSON 문자열의 형식을 지정하는 빠르고 간단한 방법입니다! POJO로 작업할 때 주어진 입력에서 읽는 대신 Object-to-JSON 변환만 수행하고 예쁜 인쇄를 활성화합니다.

ObjectMapper mapper = new ObjectMapper();

String jsonBook = mapper.writeValueAsString(book);
String indentedBook = mapper.writerWithDefaultPrettyPrinter()
                            .writeValueAsString(book);


System.out.println(jsonBook);
System.out.println(indentedBook);
{"title":"Our Mathematical Universe","author":"Max Tegmark","releaseYear":2014}
{
  "title" : "Our Mathematical Universe",
  "author" : "Max Tegmark",
  "releaseYear" : 2014
}

글로벌 프리티 프린트 설정

또는 프로젝트에서 Jackson이 선호하는 전역 동작인 경우 전역 예쁜 인쇄를 활성화할 수 있습니다. 이것은 사용하는 것처럼 쉽습니다. enable() 방법 ObjectMapper() 인스턴스화할 때 인스턴스:

ObjectMapper mapper = new ObjectMapper().enable(SerializationFeature.INDENT_OUTPUT);

객체를 JSON 문자열로 작성하자마자 – pretty-printing이 기본적으로 활성화됩니다.

Object jsonString = mapper.readValue(inputString, Object.class);
String indentedString = mapper.writeValueAsString(jsonString);

System.out.println(jsonString);
System.out.println(indentedString);

결과 :

{Task 1=In_Progress, Task 2=Done, Task 3=Planned}
{
  "Task 1" : "In_Progress",
  "Task 2" : "Done",
  "Task 3" : "Planned"
}

POJO 사용:

String jsonBook = mapper.writeValueAsString(book);
System.out.println(jsonBook);

모범 사례, 업계에서 인정하는 표준 및 포함된 치트 시트가 포함된 Git 학습에 대한 실습 가이드를 확인하십시오. 인터넷 검색 Git 명령을 중지하고 실제로 배움 이것!

{
  "title" : "Our Mathematical Universe",
  "author" : "Max Tegmark",
  "releaseYear" : 2014
}

예쁜 인쇄가 일반적인 표시 형식인 경우 이 접근 방식은 훨씬 덜 장황합니다.

Spring Boot로 멋지게 인쇄하는 잭슨

매뉴얼 없이 Spring Boot를 사용하는 경우 ObjectMapper 인스턴스가 생성되고 기본 직렬 변환기에 의존하는 경우 다음을 설정할 수 있습니다. indent_output 플래그 true FBI 증오 범죄 보고서 application.properties 파일 :

spring.jackson.serialization.indent_output=true

또는 application.yaml:

spring:
  jackson:
    serialization:
      INDENT_OUTPUT: true

이것은 SerializationFeature.INDENT_OUTPUT 봄의 깃발 ObjectMapper 예.

결론

이 짧은 자습서에서는 Jackson을 사용하여 String 또는 POJO에서 JSON을 예쁘게 인쇄하는 방법을 살펴보았습니다. 단일 인쇄 변경 사항(한 번만 예쁘게 인쇄하려는 경우)과 전역 Jackson 플래그를 설정하는 방법을 살펴보았습니다. ObjectMapper. 마지막으로 Jackson으로 예쁜 인쇄를 가능하게 하기 위해 Spring Boot 속성을 변경하는 방법을 살펴보았습니다.

타임 스탬프 :

더보기 스택카부스