Gson은 Google에서 개발한 Java 기반의 라이브러리로, JSON 데이터와 자바 객체 간의 직렬화와 역직렬화를 수행하는데 사용됩니다. Gson은 JSON 데이터를 파싱하고, JSON 문자열을 자바 객체로 변환하고, 자바 객체를 JSON 문자열로 변환할 수 있습니다.
Gson은 매우 간편하고 유연한 API를 제공하여 사용자가 JSON 데이터와 자바 객체 간의 변환을 쉽게 수행할 수 있습니다. Gson은 JSON 데이터에 대한 파싱을 수행하면서 예외를 처리하고, 개발자가 원하는 방식으로 오류를 처리할 수 있도록 해줍니다. Gson은 다른 라이브러리와의 통합도 용이하며, JSON 데이터와 자바 객체 간의 변환을 자주 수행하는 애플리케이션에서 매우 유용합니다. Gson은 오픈소스로 공개되어 있으며, 라이브러리의 문서와 예제를 참고하여 사용할 수 있습니다.
Gson 라이브러리 문서
Gson 객체 생성
Gson 객체를 Gson, GsonBuilder 으로 생성할 수 있고, GsonBuilder를 사용하면 Gson 객체를 더욱 세밀하게 조정할 수 있습니다.
import com.google.gson.Gson;
public class Example {
public static void main(String[] args) {
Gson gson = new Gson();
}
}
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
public class Example {
public static void main(String[] args) {
GsonBuilder gsonBuilder = new GsonBuilder();
// 커스텀 설정을 적용합니다.
gsonBuilder.setPrettyPrinting(); // JSON 출력시 줄바꿈과 들여쓰기 적용
gsonBuilder.excludeFieldsWithoutExposeAnnotation(); // @Expose 어노테이션이 없는 필드는 무시
gsonBuilder.serializeNulls(); // null 값도 JSON으로 변환
Gson gson = gsonBuilder.create();
// Gson 객체를 사용하여 JSON 데이터와 자바 객체 간의 변환을 수행합니다.
}
}
Json -> Object 변환하기
gson.fromJson 메소드를 사용해서 (string, class) 를 전달해 객체로 받환 받을 수 있다.
if (response.isSuccessful()) {
ResponseBody body = response.body();
if (body != null) {
String obj = body.string();
// System.out.println(obj);
JsonParser jsonParser = new JsonParser();
JsonObject object = (JsonObject) jsonParser.parse(obj);
object = (JsonObject)object.get("TbPublicWifiInfo");
JsonArray array = (JsonArray)object.get("row");
Gson gson = new Gson();
for(Object arr : array){
// System.out.println(arr.toString());
wifis.add(gson.fromJson(arr.toString(), Wifi.class));
}
// Wifi wifi = gson.fromJson(Json, Wifi.class);
// wifi.toString();
}
JsonParser를 사용해 raw data에 상황에 맞춰 JsonObject, JsonArray를 사용하여 pasring 해주고, wifi.class를 생성해 객체로 ArrayList<wifi> 에 하나씩 넣어주었다. parsing 도움글 : https://compogetters.tistory.com/87
import java.util.ArrayList;
public class getController {
private static ArrayList<Wifi> wifis ;
public static void main(String[] args) {
WifiGetInfoOkhttp wifi = new WifiGetInfoOkhttp();
wifis = wifi.getUserInfo();
for (int i = 0; i < wifis.size(); i++) {
System.out.println(wifis.get(i).LAT + " " + wifis.get(i).LNT);
}
}
}
하나씩 get하여 확인해보니 객체별로 값을 제대로 뽑아낼 수 있었다. 다음은 해당 객체들은 DB에 저장해보아야겠다.
'Backend' 카테고리의 다른 글
SOLID : 객체 지향 설계 5원칙 (0) | 2023.05.12 |
---|---|
openApi 활용(4) : servlet redirection, GeoLocation, 버튼 구현 (0) | 2023.04.17 |
openApi 활용(3) DB 연동하기 (0) | 2023.04.16 |
openApi 활용(1) : okhttp3 사용해보기 (0) | 2023.04.11 |