일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 스프링
- spring
- 한글
- 애플
- 녹화프로그램
- SQL
- 파이썬
- 코딩학습
- Python
- 프로그래머스
- json
- 유니티
- Apple
- iPad
- 아이패드
- 영상편집
- 아이폰
- 윈도우
- AWS
- programmers
- 코틀린
- kakao
- neo4j
- Kotlin
- unity
- DaVinci Resolve
- 튜토리얼
- 윈도우10
- graph DB
- Tutorial
- Today
- Total
코드짜는 노인네
[Spring boot] 스프링 부트 Json 파일 읽어오기 본문
[Spring] 스프링 부트 Json 파일 읽어오기
한번씩 json파일을 다운받아 해당 파일안에 들어있는 데이터를 사용해야될 경우가 있습니다. Spring에서 json파일을 불러오고, 특정값을 가지고 오는 방법에 대해 알아보겠습니다.
[
{
"news": {
"title": "서울동부교육지원청, 써큘러스리더와 <b>난독</b>·경계성 학생 지원 업무협약",
"originallink": "http://www.edupress.kr/news/",
"link": "http://www.edupress.kr/news/articleView.html",
"description": "김애경 동부교육장(오른쪽에서 네번째)과 이애진 써큘러스리더 대표(오른쪽에서 다섯번째) 가... ",
"pubDate": "Thu, 25 Aug 2022 16:10:00 +0900"
}
},
{
"news": {
"title": "[고향갑의 <b>난독</b>일기(難讀日記)] 어버이의 나라",
"originallink": "https://www.kgnews.co.kr/news/article.html",
"link": "https://www.kgnews.co.kr/news/article.html6",
"description": "인조반정(仁祖反正)은 쿠데타다. ... ",
"pubDate": "Mon, 22 Aug 2022 06:02:00 +0900"
}
}
]
위의 코드는 Naver 뉴스 API를 활용하여, 만든 json파일 코드입니다. 인제 이 코드를 Spring boot 에서 특정 값을 가지고 오는 코드를 알아보겠습니다.
- build.gradle
dependencies {
// https://mvnrepository.com/artifact/com.googlecode.json-simple/json-simple
implementation group: 'com.googlecode.json-simple', name: 'json-simple', version: '1.1.1'
}
일단, build.gradle 에 dependencies를 추가해줘야 합니다. 위의 코트를 추가해준 다음, 아래의 사진과 같이 오른쪽 상단에 버튼이 생성됩니다.
글자는 해당 아이콘위에 마우스를 올려놓으면 볼 수 있습니다. 이 버튼을 누르면, 오른쪽 하단에, 새로운 빌드가 진행되는 모습을 볼 수 있습니다. 이 빌드가 끝날때까지 기다려주세요.
- json 파일 읽어오기
import com.fasterxml.jackson.databind.ObjectMapper;
import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;
import java.io.FileReader;
import java.io.Reader;
import java.util.*;
public void readJson() throws Exception {
JSONParser parser = new JSONParser();
// JSON 파일 읽기
Reader reader = new FileReader("파일 경로");
JSONArray dateArray = (JSONArray) parser.parse(reader);
...
}
JSONParser 객체를 생성한 다음, Reader를 이용하여, json 파일을 읽어옵니다. 그 다음 코드가 중요한데요. 위의 코드에서는 JSONArray를 사용하였습니다. 이 부분은 json 안의 코드가 어떤방식이냐에 따른 선택인데요.
JSONArray | - json 코드가 [ ] 로 감싸고 있을 경우 - List 형식으로 index 값으로 데이터 값을 불러온다. |
JSONObject | - json 코드가 { } 로 감싸고 있을 경우 - key : value 형식으로 저장되어있는 값을 불러온다. |
즉, 위에서 보여드린 json 파일을 보면, [ ] 로 감싸고 있는 모습을 볼 수 있다. 그래서, 'JSONArray'을 선택하였습니다. 만일 코드의 시작이 { } 로 되어있다면, 'JSONObject'를 선택해야됩니다.
...
for (int i = 0; i < dateArray.size(); i++) {
JSONObject element = (JSONObject) dateArray.get(i);
JSONObject ObjNews = (JSONObject) element.get("news");
String ObjTitle = (String) ObjNews.get("title");
System.out.println("ObjTitle = " + ObjTitle);
}
...
일단, 지금 예시는 리스트 형식으로 구성이 되어있기 때문에, for문을 이용해서 하나하나 값을 가져온 값을 'JSONObject' 안에 넣어준 다음, key 값을 이용해서 'news'의 value값을 가져옵니다. 여기서 value는 'key:value'로 구성이 되어있기에, 한번더 key값을 이용해서 안의 값을 가져옵니다. 단, 'String ObjTitle = (String) ObjNews.,get("title")' 로 코드를 작성해놓은 이요는, 'title'의 value는 더이상 'key:value'로 구성이 되어있지 않기 때문에, 'String'으로 받아옵니다. 그리고 출력을 하면, 해당 데이터가 정상적으로 출력이 됩니다.
- 전체 코드
import com.fasterxml.jackson.databind.ObjectMapper;
import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;
import java.io.FileReader;
import java.io.Reader;
import java.util.*;
public void readJson() throws Exception {
JSONParser parser = new JSONParser();
// JSON 파일 읽기
Reader reader = new FileReader("파일 경로");
JSONArray dateArray = (JSONArray) parser.parse(reader);
for (int i = 0; i < dateArray.size(); i++) {
JSONObject element = (JSONObject) dateArray.get(i);
JSONObject ObjNews = (JSONObject) element.get("news");
String ObjTitle = (String) ObjNews.get("title");
System.out.println("ObjTitle = " + ObjTitle);
}
}
위의 코드는 단순히 출력을 해본것이며, 다른 방식으로 로직을 작성하여서 데이터를 활용하시면 됩니다!
'spring' 카테고리의 다른 글
[Spring] Spring Security 이해 (0) | 2022.08.22 |
---|---|
[Spring] MVC - Request (0) | 2022.08.22 |
[SpringBoot] SpringBoot 프로젝트 생성방법 (0) | 2022.08.22 |
[Spring] CORS (Cross Origin Resource Sharing) (0) | 2022.07.24 |
[Spring] 클라이언트에서 보낸 데이터 서버에서 받는 방법 (@PathVariable, @RequestParam, @ModelAttribute, @RequestBody) (0) | 2022.07.22 |