Java에서 JSON 데이터로 작업하기 위해서는 다양한 라이브러리가 있다.
보편적인 라이브러리는 다음과 같다.
- Jackson
- Gson
- json-io
- Genson
이 중에서 Gson 라이브러리를 사용해서 JSON을 JAVA에서 다루는 방법을 정리했다.
Gson?
Gson은 Java에서 Json을 파싱하고, 생성하기 위해 사용되는 구글에서 개발한 오픈소스.
Java Object를 Json 문자열로 변환할 수 있고, Json 문자열을 Java Object로 변환할 수 있다.
Gson은 Object mapping 방식 말고도, Json자체를 JsonObject라는 class로 만들어서 Json내에 object, 값, 배열,null 을 가져오거나, 추가, 삭제 등을 할 수 있다.
dependency 추가
* 최신버전은 Maven https://mvnrepository.com/artifact/com.google.code.gson/gson
1. 리스트를 리폼하지 않고, 전체를 JSON형태로 변환
DB에서 조회해온 리스트 데이터가 있다.
List<CommonDto> getTestList = commonService.getTestList(paramDto);
이를 Gson 라이브러리를 사용해 JSON 으로 변환하는 코드
- Object -> Json 변환 : toJson
// Gson 객체 생성
Gson gson = new Gson();
// Json 문자열로 변환
String jString = gson.toJson(getTestList);
- Json 문자열 -> Object 변환 : fromJson
import com.google.gson.Gson;
public class JsonToObject {
public static void main(String[] args) {
// Json 문자열
String jsonStr = "{\"id\":1,\"name\":\"Anna\"}";
// Gson 객체 생성
Gson gson = new Gson();
// Json 문자열 -> Map 객체
Map<String, Object> tempMap = gson.fromJson(jsonStr, Map.class);
// Map 객체 toString() 출력
System.out.println(tempMap); // {id=1.0, name=Anna}
}
}
- 응용 : dto에 담아서 DB에 JSON 형태의 스트링으로 저장가능
testDto.setCompanyId(jString);
2. 리스트를 리폼해서, 원하는 데이터만 JSON 으로 담고 싶을때
* JsonArray를 만든다.
JsonArray ja = new JsonArray();
* 반복문을 통해 jsonObject에 리스트에서 원하는 값만 추출해 담아서, JsonArray에 add한다.
for(int i =0; i<getTestList .size(); i++) {
JsonObject jo = new JsonObject();
jo.addProperty("customerId", getTestList .get(i).getCompanyId());
jo.addProperty("customerName", getTestList .get(i).getCompanyName());
ja.add(jo);
}
* 가공한 JSON형태의 데이터를 String 형태로 변환해서
String resultString = ja.toString();
* dto에 담아 DB에 저장하고 싶을 때
paramDto.setCompanyId(resultString);
3. json 형태의 String 데이터에서 원하는값만 뽑아 사용하고 싶을때
기본적으로 Json String을 JsonObject로 받기 위해서는 JsonParser.parseString() method를 이용한다.
(해당 method는 static이므로, 걍 사용하면 된다.)
참고로 parseString의 return 은 JsonElement 이므로 변환해야 JsonObject로 받을 수 있다.
JsonObject jsonObj = (JsonObject) JsonParser.parseString(json);
Gson Json 관련 도움이 된 티스토리..
Gson에서 Json 구성 요소 5가지 (JsonElemnt/JsonObject/JsonPrimitive/JsonArray/JsonNull)
https://github.com/jeng832/blog-example/tree/master/gson2 jeng832/blog-example Contribute to jeng832/blog-example development by creating an account on GitHub. github.com Gson은 Object mapping 방식..
ijeee.tistory.com