gson library의 JsonArray 사용법을 정리한다.
임의의 JSON Array형태는 아래와 같이 정한다.
JsonArray: ["apple","banana","coconut"]
JsonArray형태의 data는 아래와 같이 함수를 구현하여 만든다.
JsonArray와 JsonPrimitive를 import 해주어하며, for each문을 통해 JsonArray에 add하여 값을 추가한다.
import com.google.gson.JsonArray;
import com.google.gson.JsonPrimitive;
public JsonArray makeTmpArr() {
JsonArray arr = new JsonArray();
String[] str = {"apple", "banana", "coconut"};
for(String val : str) {
arr.add(val);
}
System.out.println("JsonArray: " + arr);
return arr;
}
이제 만들어 놓은 JsonArray를 가지고 3가지 형태의 접근을 해본다.
첫번째는 기본적인 for문을 이용한 접근법이다.
JsonArray의 크기를 size()를 통해 알 수 있므로 for문의 index를 통해 loop를 돌린다.
값을 접근하고자 하는 경우에는 get(index)를 통해 얻어 낼 수 있다.
import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
public void test() {
JsonArray arr = makeTmpArr();
System.out.println("\n1. for loop");
for(int i = 0; i < arr.size(); i++) {
System.out.println("> " + i + ": " + arr.get(i));
}
}
결과값은 아래와 같다.
1. for loop
> 0: "apple"
> 1: "banana"
> 2: "coconut"
두번째는 for each 문을 이용해 접근해본다.
JsonArray의 접근 시 JsonElement 형태로 받아 for each문을 통해 접근 할 수 있다. gson을 이용하는 경우 JsonArray,JsonObject 등.. 기본 값은 JsonElement 형태이기 때문이다.
해당 element의 값은 string 형태로 getAsString()으로 출력하였지만, element만으로도 동일한 결과값을 출력한다. data 형태의 변환, 가공이 필요한 경우에는 getAsXXX()를 사용할 수 있다.
import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
public void test() {
JsonArray arr = makeTmpArr();
System.out.println("\n2. for each");
for(JsonElement element : arr) {
System.out.println("> " + element.getAsString());
}
}
결과값은 위와 동일하게 출력된다.
2. for each
> "apple"
> "banana"
> "coconut"
마지막으로 iterator를 사용하여 접근해본다.
java.util.Iterator를 import 해주고, Iterator<JsonElement> 형태로 받아온다. 위에서 언급한 것과 같이 기본적인 변환 값은 JsonElement로 전달된다. iterator의 hasNext()를 통해 다음 data가 존재하는지 while문으로 접근하고,
실제 data는 it.next()를 통해 접근하게 된다.
import java.util.Iterator;
import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
public void test() {
JsonArray arr = makeTmpArr();
System.out.println("\n3. iterator");
Iterator<JsonElement> it = arr.iterator();
while(it.hasNext()) {
System.out.println("> " + it.next());
}
}
마지막의 출력 결과도 동일한 것을 볼 수 있다.
3. iterator
> "apple"
> "banana"
> "coconut"
'gson' 카테고리의 다른 글
[gson] JsonObject 데이터 추가 (0) | 2021.06.30 |
---|---|
[gson] JsonObject 형태 파일 읽기 (JsonReader) (0) | 2020.12.27 |
[gson] JsonParser 사용법 (0) | 2020.12.23 |
[gson] JsonObject value 가져오기 (0) | 2020.12.22 |
[gson] string을 jsonObject로 변경 (0) | 2020.12.15 |
댓글