반응형
이번 게시글에서는 Gson과 JsonParser를 정리해보겠습니다.
pom.xml에 gson의존성을 추가해줍니다.
<!-- https://mvnrepository.com/artifact/com.google.code.gson/gson -->
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.6</version>
</dependency>
1. json문자열을 객체에 할당하기
@Getter
@Setter
public class Member {
private String name;
private String age;
}
Member클래스를 만들어줍니다.
@Test
void test() {
// {"name":"John", "age":"20"}
String jsonData = "{\"name\":\"John\", \"age\":\"20\"}";
Gson gson = new Gson();
MemberDto member = gson.fromJson(jsonData, MemberDto.class);
}
Gson객체를 생성해준뒤 gson.fromJson 메서드를 호출하여 객체로 변환이 가능합니다.
2. 객체를 Json문자열로 바꿔주기
@Getter
@Setter
public class Member {
private String name;
private String age;
}
Member클래스는 동일하게 사용합니다.
@Test
void test() {
Member member = Member.builder().name("James").age(20).build;
Gson gson = new Gson();
String jsonData = gson.toJson(member);
}
gson.toJson(객체) 를 통해서 json으로 변경이 가능합니다.
3. key : value 타입의 json 처리
"{"name":"John", "age":"20"}"
대부분의 json데이터교환은 문자열을 통해 이뤄지니 모든예시는 문자열을 기준으로 하겠습니다.
간단한 json문자열을 jsonData라는 문자열에 넣고 JsonParser를 사용해 데이터를 꺼내는 예제입니다.
@Test
void test() {
// {"name":"John", "age":"20"}
String jsonData = "{\"name\":\"John\", \"age\":\"20\"}";
JsonParser jsonParser = new JsonParser();
JsonElement jsonElement = jsonParser.parse(jsonData);
JsonObject jsonObject = jsonElement.getAsJsonObject();
String name = jsonObject.get("name").getAsString();
System.out.println("name = " + name);
}
1. JsonParser.parse를 이용하여 문자열을 JsonElement로 변환
2. 변환한 JsonElement를 JsonObject로 변경
3. jsonObject.get("key").getAsString() 을 이용하여 원하는 데이터 추출
JsonObject 객체에서 get메서드를 호출하여 원하는 value를 꺼낸다는걸 기억해줍니다.
숙달됐다면 한번에 꺼내줍니다.
String name = jsonParser.parse(jsonData).getAsJsonObject().get("name").getAsString();
4. value에 json배열이 들어간 경우
{"class":"1", "member": [{"name":"John", "age":"30"}, {"name":"Tom", "age":"29"}]}
Json배열을 처리하는 방법입니다.
@Test
void test() {
//{"class":"1", "member":[{"name":"John", "age":"30"},{"name":"Tom", "age":"29"}]}
String jsonData = "{\"class\":\"1\", \"member\":[{\"name\":\"John\", \"age\":\"30\"},{\"name\":\"Tom\", \"age\":\"29\"}]}";
JsonParser jsonParser = new JsonParser();
JsonElement jsonElement = jsonParser.parse(jsonData);
JsonObject jsonObject = jsonElement.getAsJsonObject();
JsonArray members = jsonObject.get("member").getAsJsonArray();
for (JsonElement member : members) {
JsonObject JsonObject = member.getAsJsonObject();
String name = JsonObject.get("name").getAsString();
System.out.println("name = " + name);
}
}
jsonObject.get("member").getAsJsonArray() 제외하고는 1번예제와 동일합니다.
JsonObject.get("key")의 데이터가 JsonArray 일때 해당방법을 사용하여 JsonArray의 객체에 넣어준후
for문을 통해 꺼내주도록 합니다.
반응형
'Spring' 카테고리의 다른 글
Junit5(Juptier) Service 테스트코드 작성법(Mock, MockBean 차이점 확인) (2) | 2021.03.13 |
---|---|
Junit5(jupiter) Controller 테스트코드 작성법 (WebMvcTest, MockMvc, MockBean을 사용한 테스트) (2) | 2021.03.13 |
[spring] spring과 객체지향의 원리 (0) | 2021.02.28 |
[spring] 객체지향 설계의 5가지 원칙 with spring (SOLID) (0) | 2021.02.22 |
[Jacoco] Jacoco 사용법 및 예제(maven) (0) | 2021.01.20 |
댓글