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 속성을 변경하는 방법을 살펴보았습니다.