홍차의 미로찾기

JAVA 객체를 camel case나 snake case로 변경 (2) 본문

프로그래밍/SPRING 입문

JAVA 객체를 camel case나 snake case로 변경 (2)

홍차안디 2022. 1. 4. 00:22
반응형

지난 글에서는 camel case로 받고, snake case json String으로 전달하는 방법에 대해 작성했다면

 

 

이번 글은 camel case로 받고 snake case로 전달하는 방법을 작성하려고 한다.

물론 반대로 가능하다.


1편 보러가기

2021.12.29 - [프로그래밍/SPRING 입문] - JAVA 객체를 camel case나 snake case로 변경 (1)

 

 

JAVA 객체를 camel case나 snake case로 변경 (1)

Spring Boot에서 클라이언트로부터 json 형식으로 데이터를 주고받을 때, key의 naming을 설정해야 한다. 보통 초기에 어떤 형식을 사용할 것인지 정하고 시작하기도 하지만 개발을 하다보면 형식을 자

aandi.tistory.com


이번에도 ObjectMapper 클래스를 사용한다.

ObjectMapper에는 readValue() 메소드가 존재한다.

첫번째 인자로 json 문자열을 넣어주고, 두 번째 인자로 변환할 클래스를 넣어주면 된다.

 

1편에서 다뤘던 것에서 한 번 더 변환해주는 것이다.

만약 코드가 이해가 잘 안된다면 1편을 먼저 보고 와보자!

 

@JsonNaming(PropertyNamingStrategy.SnakeCaseStrategy::class)
public class User{
	private String userId;
	private String userName;
}

 

//요청

[POST] localhost:8080/test
application/json

{
    "userName" : "testname",
    "userId" : "testid"
}

//코드

package com.example.excepTest.JsonTest;

import lombok.Builder;
import lombok.Data;

@Data
@Builder
public class JsonDTO {
    private String userName;
    private String userId;
}
package com.example.excepTest.JsonTest;

import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.PropertyNamingStrategies;
import lombok.SneakyThrows;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class JsonController {

    @PostMapping("/test")
    @SneakyThrows
    public Object test(@RequestBody JsonDTO req) {
        System.out.println(req); //JsonDTO(userName=testname, userId=testid)
        ObjectMapper objectMapper = new ObjectMapper()
        	.setPropertyNamingStrategy(PropertyNamingStrategies.SNAKE_CASE);
        return objectMapper.readValue(objectMapper.writeValueAsString(req), Object.class);
    }
}

 

 

맨 아래 코드를 보면 

return objectMapper.readValue(objectMapper.writeValueAsString(req)Object.class);

 

readValue() 메소드의 첫번째 인자objectMapper.writeValueAsString(req) 를 넣어줬다.

camel case로 받은 객체를 snake case json 문자열로 변환한 값이다.

그리고 이 json String을 Object 클래스로 변환해서 응답해준다.

 

 

 

 

| 결과

 

 

반응형
Comments