[Java] json to vo (json을 VO객체로)

 

웹 개발을 할 때 웹소켓이나 RestAPI로 받은 json데이터를 그대로 VO형태로 바꿔서 사용할 수 있는 방법이 있어 공유하고자 올립니다.

우선적으로 Gson을 사용하니 pom.xml에 디펜던시를 추가해줍니다.

1
2
3
4
        <dependency>
            <groupId>com.google.code.gson</groupId>
            <artifactId>gson</artifactId>
        </dependency>
cs

 

예시로 받은 json형태의 데이터를 String으로 변환해 출력했을 때의 예시입니다.

1
2
3
4
5
6
7
8
9
{"testUpdate":{
    "employee":{"id":"4","pairId":"198","employeeId":"138"},
    "tempUpdate":{
        "temps":[
            {"tempId":"1640779763622300000","timestamp":"1640779763","timestampNano":"1640779763622300000","upDown":"DOWN"},
            {"tempId":"1640779763622300001","timestamp":"1640779790","timestampNano":"1640779790786500000","upDown":"UP"}
        ]
    }
}}
cs

 

해당하는 json에 대응하는 java vo파일 예시입니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
import com.google.gson.annotations.SerializedName;
import lombok.Getter;
import lombok.ToString;
 
import java.util.List;
 
@Getter
@ToString
public class TempVO {
    @SerializedName("testUpdate"private tempTestUpdate testUpdate;
}
 
@Getter
@ToString
class tempTestUpdate {
    private employee market;
    private tempUpdate tempUpdate;
}
 
@Getter
@ToString
class employee {
    private String id;
    private String pairId;
    private String employeeId;
}
 
@Getter
@ToString
class tempUpdate {
    private List<temp> temps;
}
 
@Getter
@ToString
class temp {
    private String tempId;
    private String timestamp;
    private String timestampNano;
    private String upDown;
}
cs

 

VO생성까지 끝났다면 최종적으로 받은 json데이터를 String으로 변환한 값을 아래와 같이 넣어주면 자동으로 값이 입력된 VO객체가 생성됩니다.

1
TempVO tempVO = gson.fromJson(data, TempVO.class);
cs

꺼내서 사용하시는건 Getter Setter 사용하시면 됩니다.. 다들 금방 짜도 에러 없이 돌아가는 편안한 개발 되세요

반응형