플랫폼/안드로이드 android

Json 파싱 하기 [안드로이드/GSON]

삐뚤어진 개발자 2019. 6. 13.

json 은 키-값으로 문자열을 구분하는 데이터 형식입니다.

예시: { "key1": "value1", "key2": "value2" }

 

참고로 [] 대괄호는 jsonArray로 파싱해줘야합니다.

 

1. Gson(라이브러리) 으로 파싱.  (JsonObject)

gson 라이브러리 JsonObject

 public String parse(String jsonLine) {
    JsonElement jelement = new JsonParser().parse(jsonLine);
    JsonObject  jobject = jelement.getAsJsonObject();
    jobject = jobject.getAsJsonObject("data");
    
    JsonArray jarray = jobject.getAsJsonArray("translations");
    jobject = jarray.get(0).getAsJsonObject();
    
    String result = jobject.get("translatedText").toString();
    return result;
}

이 코드를 분석해보면 모든 json 파싱을 할수 있습니다. 

 

* 설명

 

parse 라는 함수를 작성해 놓은 겁니다. 

parse 함수에 json문자열을 받아서 JsonElement 클래스 객체로 파싱(해석)합니다.

jsonElement 객체를 JsonObject로 바꿔주고 data라는 키값을 가지고 있는

object를 다시 jobject 객체에 넣어줍니다.

 

 

jsonArray 객체를 생성하여 translations 라는 키값을 가진 json의 value 값을 넣어주고,

jsonObject 에 jsonArray 의 첫번째 값을 넣어줍니다. (get(0)) 메소드로

 

마지막으로 result 문자열 객체에  jobject 객체(jsonArray 값의 첫번째 배열)중 translatedText 라는 키값을 가진 value 값을 string 으로 변환하여 넣어주고 

 

마지막으로 result 값을 리턴합니다.

(parse 함수는 result 값 리턴)

 

요약:

parse 함수에 json string을 넣으면

key값으로 translations의 이름을 가진 배열 중,

첫번째 배열(jarray.get(0)) 중,

key 값으로 translatedText의 이름을 가진 value 값을 리턴한다.

 

 

 

2. json (라이브러리)으로 파싱.  (JSONObject)

이건 나중에 분석해서 올리겠습니다.

 

 

어찌되었든 JSONObject 와  jsonObject는 라이브러리 자체가 다른 것이기 때문에. 사용법도 다릅니다.

소/대문자 주의.

댓글