준호씨의 블로그

Jackson Json - json name을 snake case로 바꾸기 본문

개발이야기

Jackson Json - json name을 snake case로 바꾸기

준호씨 2020. 8. 1. 01:31
반응형

아래와 같은 Person 클래스가 있습니다. (편의상 lombok을 사용합니다.)

@Data
@Builder
public class Person {
    private String firstName;
    private String lastName;
    private String byName;
    private String phoneNumber;
}

person 인스턴스를 만들고 ObjectMapper로 json string을 출력합니다.

@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));
    }
}

아래처럼 json name부분이 camel case로 나옵니다.

{"firstName":"Michael","lastName":"Jordan","byName":"Air Jordan","phoneNumber":null}

firstName처럼 첫 글자가 소문자고 이후 단어부터는 첫 글자가 대문자로 나오는 게 camel case입니다. 낙타의 등 모양 같다고 camel case라고 합니다.

그런데 만약 first_name처럼 사이사이에 underbar(_)가 들어가는 snake case방식으로 출력하고 싶을 수 있습니다. 그럴 때는 아래처럼

@Data
@Builder
@JsonNaming(PropertyNamingStrategy.SnakeCaseStrategy.class)
public class Person {
    private String firstName;
    private String lastName;
    private String byName;
    private String phoneNumber;
}

@JsonNaming(PropertyNamingStrategy.SnakeCaseStrategy.class)를 붙여주면 됩니다.

json name이 first_name으로 snake case로 나옵니다.

{"first_name":"Michael","last_name":"Jordan","by_name":"Air Jordan","phone_number":null}

 

 

springboot 프로젝트인 경우 application.properties에 아래처럼 설정하면 됩니다.

spring.jackson.property-naming-strategy=SNAKE_CASE

 

반응형
Comments