json 파싱

서린·2024년 1월 22일

혼자개발

목록 보기
24/82

샘플 코드를 사용하려면 샘플코드에 json파싱을 해야 된다고 한다
json을 가공하는 건데,
open api의 데이터를 가져오는거에서 끝나는게 아니라 json형태로 표현되도록 하기위한 과정이다

json = javascript 객체문법을 따르는 문자 기반의 데이터 포맷
데이터를 구조화하여 전달하는 포맷중 하나이다
데이터를 효율적으로 저장하고 전송 할 수있도록 돕는다
문자열 형태로 존재한다

json 파싱 : 문자열 -> 네이티브 객체로 변환하는 과정
문자열화 : 네이티브 객체 -> 문자열로 변환하는 과정

json 파싱을 하는이유!!
클라이언트가 서버에게 json형태의 요청을 보내면
서버에서는 요청을 받을 때 처리하는 controller에서 파라미터로 데이터를 받게 된다.
이때 json 형태의 string 타입 문자열로 받는게 아니라 자바의 객체로 받는다
(자바의 객체를 사용할 때 장점 : 자바의 객체지향 프로그래밍은 다양한 데이터 유형과 연산을 지원하기 때문에 데이터를 더 쉽게 처리하고 조작 가능,
객체는 속성과 메소드로 구성되어있어 코드의 가독성과 유지보스성을 향상시킨다,
자바의 객체는 정적 타입 언어라서 컴파일 시 타입 오류를 잡을 수 있다,
자바는 json 파싱을 위한 라이브러리가 프레임워크를 제공하기 때문에 편리하고 생산성 향상)

일주일이 넘도록 open api를 사용하기 위한 서칭을 하고있는데, 서칭을 하면 할수록 새로운 정보들이 나오니까 완벽히 구현하기에 시간이 참 많이 걸린다
하지만 가데이터로 하는 것 보단 open api구현을 직접 해보고 싶다..

//json 파싱
JsonParser parser = new JsonParser();
JsonObject obj = parser.parse(sb.toString()).getAsJsonObject();
	     
JsonArray arr = obj.get("response").getAsJsonObject()
        .get("body").getAsJsonObject()
        .get("items").getAsJsonObject()
        .get("item").getAsJsonArray();
	     
for (JsonElement jsonElement : arr) {
	JsonObject temp = jsonElement.getAsJsonObject();

	MountainMapper.save(Mountain.builder()
	                 .mtName(temp.get("frtrlNm").getAsString())
	                 .mtLocation(temp.get("addrNm").getAsString())
	            	.mtHeight(temp.get("aslAltide").getAsString())
	                 .build());

파싱 코드를 알아보면서 xml 형식에서의 이름도 알게되고 이런 방식으로 mountain db에 저장할 수 있다는걸 알았다

코드를 써봤는데 builder에서 create method 'builder()' in type 'Mountain' 이라는 에러가 나서 내일은 builder에 대해서 찾아보고 파싱코드를 수정할 계획이다


현재 사용하고 있는 gson 버전은 굳이 인스턴스화 할 필요 없이 바로 사용하도록 가이드 하고있다
그래서 이렇게 JsonParser를 이용하여 변환하는 과정에서 경고표시가 나타나는 것은 정적메소드를 사용하라는 의미이다

0개의 댓글