본문 바로가기

FrontEnd/Android 기초

[Android] JSON 데이터 파싱하는 방법

반응형

Json이란?

  JSON은 JavaScript Object Notation의 약자로 데이터를 구조적으로 표현하기 위한 일종의 포맷(Format)으로 네트워크를 통해 데이터를 주고받을 때 사용되는 경량의 데이터 형식을 의미한다. 안드로이드에서 Json을 파싱 하기 이전에 먼저 json이 어떤 형식의 데이터 포맷인지 알아보자! 

 

JSON은 Object, Array, Key-Value 형태로 이루어져 있으며 String, Int, Long, Boolean 등의 타입을 지원한다. 

 

JSON의 오브젝트(Object)

  JSON객체는 여는 중괄호( { )로 시작해 닫는 중괄호( } )로 끝난다.

{ 중괄호 사이에 JSON 데이터가 표현된다.}

 

JSON의 데이터: key-value

  JSON 오브젝트인 중괄호({}) 사이에 “데이터 이름” : 값의 형식으로 표현되며, 이름은 항상 쌍따옴표(“”)로 감싸야 하고 이름과 값의 사이는 콜론(:)으로 구분한다. 데이터가 여러 개일 경우는 쉼표(,)로 구분한다..

{ “데이터 이름”: “값”, “데이터2 이름” : “값2” }

  데이터의 값은 문자, 숫자, 불린, null, JSON 객체, JSON 배열이 될 수 있는데 표현식은 조금씩 다르다. 

 

데이터 형식 데이터 이름: 값 표현 비고
문자 “데이터 이름” : “값” 값을 쌍따옴표로 감싸야 한다.
숫자 “데이터 이름” : 123 값에 쌍따옴표를 사용하지 않는다.
불린 “데이터 이름” : true true,false를 값으로 사용하되 쌍따옴표를 사용하지 않는다.
null “데이터 이름” : null null 값을 사용할 수 있다.
JSON 객체 “데이터 이름” : { } 데이터의 값으로 JSON 오브젝트를 사용할 수 있다.
JSON 배열 “데이터 이름” : [ ] 데이터의 값으로 JSON 배열을 사용할 수 있다.

 

JSON의 배열(Array)

  JSON 배열은 JSON 오브젝트의 컬렉션으로 여는 대괄호( [ )로 시작해 닫는 대괄호( ] )로 끝난다. 배열에 입력되는 JSON 오브젝트가 복수 개일 경우에는 쉼표( ,)로 구분한다.

[ { “데이터 이름”: “값” } , { “데이터1 이름” : “두 번째 값” },  { “데이터2 이름” : 123 } ]

  입력되는 JSON 오브젝트 모양이 모두 같을 필요는 없지만 JSON 오브젝트 안에 있는 같은 이름을 가진 데이터 ㄱ밧의 타입은 동일해야 한다.


JSON의 시작은 항상 객체인 중괄호( { } ) 또는 배열인 대괄호( [ ] )만 가능하다.

 

JSON의 시작은 항상 배열이거나

[ { “데이터 이름”: “값” } ]

 

또는 객체로 감싸져 있어야 한다.

{ “데이터 이름” : “값” }

 

JSON 데이터 형식으로만은 사용할 수 없다.

“데이터 이름” : “값” 

 


 

Json 데이터 파싱하는 방법

 

네트워크로부터 응답을 받을 때는 JSON 형식으로 받아오는 데,

그에 대한 파싱이 필요하다.

 

아래 이미지,  onResponse()메소드의 try{} 안이 JSON 데이터 파싱하는 방법이다.


JsonObject에서,

내가 가져올 데이터가 문자열이면, getString(“Key값”), 

내가 가져올 데이터가 정수이면 getInt(“Key값”), 

내가 가져올 데이터가 float이면, getFloat(“Key값”),

내가 가져올 데이터가 double이면, getDouble(“Key값”),

내가 가져올 데이터가 리스트이면, getJsonArray(“Key값”),

내가 가져올 데이터가 딕셔너리이면, getJsonObject(“Key값”),

…로 데이터를 가져올 수 있다. 


코드를 작성하다보면, 해당 JSON 키값에 데이터가 없을 수도 있으니, 예외처리를 해주라는 경고 빨간 밑줄을 볼 수 있다. 그 때는 alt + enter를 눌러서 try-catch문으로 작성해준다.

Json에서 만약에 이런 문자열이 없을 수 있으니까, Try-catch로 해야해서 빨간줄이 뜬다. 

 

에러 있을 때는 토스트로 처리하는 것이 좋다.



반응형