아래와 같이 JsonObject 형태의 파일을 읽는 방법을 정리한다.
{
"fruit": "apple",
"vegetable": {
"first": "tomato",
"second": "onion"
}
}
기본적으로 파일을 읽을 때 FileReader(경로)를 통해 읽으며 import java.io.FileReader를 선언해줘야 한다.
이 때, 파일을 못찾은 경우에 대한 Exception 처리를 해줘야 하므로 import java.io.FileNotFoundException에 대한 처리를 해준다.
이제부터 Gson library를 이용하여 JsonObject 형태로 추출하는 방법을 설명한다.
JsonReader를 사용하는데 할당 시 FileReader(경로)를 통해 읽어올 수 있다. 이 후 이를 JsonObject class 형태로 변환을 하는데 이에 대한 설명은 아래 link에도 예제를 참고하면 된다.
얻어 온 JsonObject 형태의 key를 통해 값을 가져오면 정상적으로 출력되는 것을 알 수 있다.
다음은 JsonObject의 모든 key 값과 value를 접근하는 것을 추가로 넣었는데,
Map의 Entry를 이용하여 for loop를 실행한다. entrySet()을 할 경우 Map의 두번째 parameter가 JsonElement 이어야 한다. 대부분의 변환 된 형태는 JsonElement로 반환된다.
첫번째 for loop 과정과 두번째 for loop 과정과 같이 두가지로 표현할 수 있으며, 두번째 for loop는 첫번째의 과정이 생략되어 한번에 실행된다는 의미이다.
entrySet을 사용할 경우 Set<Map.Entry<String, JsonElement>> 형태로 받는데 import java.util.Set이 필요하다. 두번째 for loop와 같이 사용할 경우에는 추가할 필요 없이 사용이 가능한 것이다.
Set<Map.Entry<String, JsonElement> element = obj.entrySet();
for (Map.Entry<String, JsonElement> entry : element) {
System.out.println("key: " + entry.getKey());
System.out.println("val: " + entry.getValue() + "\n");
}
Map 형태로 접근한 이후 entry의 key와 value를 접근할 수 있다.
전체 test 코드는 아래와 같다.
package hello;
import java.io.FileReader;
import java.io.FileNotFoundException;
import java.util.Map;
import java.util.Set;
import com.google.gson.Gson;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.stream.JsonReader;
public class readJsonObjectFile {
public void test(String path) {
Gson gson = new Gson();
try {
JsonReader rd = new JsonReader(new FileReader(path));
JsonObject obj = gson.fromJson(rd, JsonObject.class);
System.out.println("\"fruit\": " + obj.get("fruit"));
System.out.println("\"vegetable\" : " + obj.get("vegetable") + "\n\n");
Set<Map.Entry<String, JsonElement>> element = obj.entrySet();
for (Map.Entry<String, JsonElement> entry : element) {
System.out.println("key: " + entry.getKey());
System.out.println("val: " + entry.getValue() + "\n");
}
for (Map.Entry<String, JsonElement> entry : obj.entrySet()) {
System.out.println("key: " + entry.getKey());
System.out.println("val: " + entry.getValue() + "\n");
}
}
catch (FileNotFoundException e) {
System.out.println("file does not exist");
}
}
}
결과는 아래와 같이 출력된다.
"fruit": "apple"
"vegetable" : {"first":"tomato","second":"onion"}
key: fruit
val: "apple"
key: vegetable
val: {"first":"tomato","second":"onion"}
'gson' 카테고리의 다른 글
[gson] JsonObject 데이터 추가 (0) | 2021.06.30 |
---|---|
[gson] JsonArray 사용법 (0) | 2021.01.22 |
[gson] JsonParser 사용법 (0) | 2020.12.23 |
[gson] JsonObject value 가져오기 (0) | 2020.12.22 |
[gson] string을 jsonObject로 변경 (0) | 2020.12.15 |
댓글