본문 바로가기
gson

[gson] JsonArray 사용법

by hong0 2021. 1. 22.
반응형

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

댓글