Notice
Recent Posts
Recent Comments
준호씨의 블로그
Jackson Json - json 가독성 높이기. pretty printer 본문
반응형
아래와 같은 Person 클래스가 있습니다. (편의상 lombok을 사용합니다.)
@Data
@Builder
@JsonInclude(JsonInclude.Include.NON_NULL)
public class Person {
private String firstName;
private String lastName;
private String byName;
private String phoneNumber;
}
아래처럼 person 인스턴스를 만들고 ObjectMapper를 이용해서 json 문자열을 만들어서 출력합니다.
Person person = Person.builder()
.firstName("Michael")
.lastName("Jordan")
.byName("Air Jordan")
.build();
ObjectMapper mapper = new ObjectMapper();
System.out.println(mapper.writeValueAsString(person));
아래처럼 출력됩니다.
{"firstName":"Michael","lastName":"Jordan","byName":"Air Jordan"}
불필요한 공백이나 개행을 없애서 전송되는 용량을 최대한 줄인 json이 생성됩니다. 하지만 가독성은 좀 떨어집니다. 그나마 항목이 적어서 볼 만 하지만 항목이 많아지면 사람이 읽기는 점점 더 복잡해집니다.
디버깅을 하거나 사람이 읽기 좋게 출력하려면 아래처럼 writerWithDefaultPrettyPrinter()를 추가해 줍니다.
System.out.println(mapper.writerWithDefaultPrettyPrinter().writeValueAsString(person));
아래처럼 읽기 좋게 출력되었습니다.
{
"firstName" : "Michael",
"lastName" : "Jordan",
"byName" : "Air Jordan"
}
스프링 부트 프로젝트인 경우 application.properties 설정으로 제어할 수 있습니다.
spring.jackson.serialization.indent_output=true
아래처럼 writerWithDefaultPrettyPrinter()를 사용하지 않아도
@SpringBootTest
public class MyTest {
@Autowired
private ObjectMapper mapper;
@Test
public void test() throws JsonProcessingException {
Person person = Person.builder()
.firstName("Michael")
.lastName("Jordan")
.byName("Air Jordan")
.build();
System.out.println(mapper.writeValueAsString(person));
}
}
아래처럼 pretty 모드로 출력됩니다.
{
"firstName" : "Michael",
"lastName" : "Jordan",
"byName" : "Air Jordan"
}
반응형
'개발이야기' 카테고리의 다른 글
분산 메시징 시스템 카프카(Kafka)의 간단한 역사와 이름의 의미 (0) | 2020.08.03 |
---|---|
Jackson Json - json name을 snake case로 바꾸기 (0) | 2020.08.01 |
Jackson Json - null 필드 생략하기 (2) | 2020.07.30 |
OSX - npm오류. gyp: No Xcode or CLT version detected! (0) | 2020.07.29 |
IntelliJ - Add File to Git 끄기 (0) | 2020.07.23 |
Comments