티스토리 뷰
728x90
인풋 데이터가 json 포맷으로 주어지는 경우가 있다.
json 파싱 라이브러리로는 gson, json-simple, Jackson 등이 존재하는데
여기서는 본인이 생각하기에 직관적이고 편하다고 생각되는 gson 라이브러리를 사용한다.
GSON 라이브러리
gson 라이브러리를 import한다.
Gradle
// https://mvnrepository.com/artifact/com.google.code.gson/gson
implementation 'com.google.code.gson:gson:2.9.0'
Maven
<!-- https://mvnrepository.com/artifact/com.google.code.gson/gson -->
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.9.0</version>
</dependency>
Nested 형태일 경우
String json = "{\n" +
" \"data\": [\n" +
" {\n" +
" \"email\": \"eskaferas@gmail.com\",\n" +
" \"firstName\": \"Seras\",\n" +
" \"lastName\": \"Meras\"\n" +
" },\n" +
" {\n" +
" \"email\": \"Soras@gmail.com\",\n" +
" \"firstName\": \"Oras\",\n" +
" \"lastName\": \"Moras\"\n" +
" },\n" +
" {\n" +
" \"email\": \"bzbzb@gmail.com\",\n" +
" \"firstName\": \"hello\",\n" +
" \"lastName\": \"bye\"\n" +
" },\n" +
" {\n" +
" \"email\": \"lrc@gmail.com\",\n" +
" \"firstName\": \"Seras\",\n" +
" \"lastName\": \"Meras\"\n" +
" }\n" +
" ],\n" +
" \"message\": \"Success\"\n" +
"}\n";
위와 같이 { {...} ...} 의 nested 형태일 경우 다음과 같이 작성한다.
json의 data가 List 형태임을 주의.
public class Input {
private String message;
private List<Data> data;
}
public class Data {
private String email;
private String firstName;
private String lastName;
}
@Test
void jsonParser() {
Gson gson = new Gson();
Input input = gson.fromJson(json, Input.class);
System.out.println(input.getMessage());
for (var datum : input.getData()) {
System.out.println(datum.toString());
}
출력 결과는 다음과 같다.
Success
Data(email=eskaferas@gmail.com, firstName=Seras, lastName=Meras)
Data(email=Soras@gmail.com, firstName=Oras, lastName=Moras)
Data(email=bzbzb@gmail.com, firstName=hello, lastName=bye)
Data(email=lrc@gmail.com, firstName=Seras, lastName=Meras)
Array 형태일 경우
String json = "[\n" +
"{\n" +
"\"name\": \"James\",\n" +
"\"age\": \"27\",\n" +
"\"clothes\": { \"upper\": \"shirt\", \"lower\": \"jeans\" }\n" +
"},\n" +
"{\n" +
"\"name\": \"John\",\n" +
"\"age\": \"32\",\n" +
"\"clothes\": { \"upper\": \"hoodie\", \"lower\": \"jogger\" }\n" +
"}" +
"]";
위와 같이 json 포맷이 [...]로 되어있는 Array가 주어진다면 다음과 같이 코드를 작성한다.
public class Person {
private String name;
private Integer age;
private Clothes clothes;
}
public class Clothes {
private String upper;
private String lower;
}
Entity[]로 받는 것이 핵심이다.
@Test
void jsonParser() {
Gson gson = new Gson();
Person[] persons = gson.fromJson(json, Person[].class);
for (var person : persons) {
System.out.println(person.toString());
}
}
출력 결과는 다음과 같다.
Person(name=James, age=27, clothes=Clothes(upper=shirt, lower=jeans))
Person(name=John, age=32, clothes=Clothes(upper=hoodie, lower=jogger))
'CS > Java' 카테고리의 다른 글
비트 연산자 유즈 케이스 모음 (0) | 2022.11.10 |
---|---|
자바의 OOP (0) | 2022.10.25 |
자바에서 동시성 문제를 해결하는 방법 (0) | 2022.09.17 |
자바의 <<, >>, >>>와 그의 활용 (0) | 2022.09.06 |
자바의 변수 종류 정리 (0) | 2022.08.31 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 레디스
- 루나빔
- RequestBody
- lunarvim
- 아키텍처
- neovim
- 배포
- RequestParam
- 도커
- IDE
- ModelAttribute
- JavaScript
- RequestPart
- vim
- Dap
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함