Json & Gson

Android/Android 기초 / / 2022. 4. 18. 11:18

Json & Gson

Json

  • (속성-값 쌍) / (키-값 쌍)으로 이루어진 데이터 오브젝트를 전달하기 위해
    • 인간이 읽을 수 있는 텍스트를 사용하는 개방형 표준 포맷
  • 공식 MediaType
    • application/json

특징

  • 서버와 클라이언트 간의 교류에서 많이 사용된다.
  • 자바스크립트 객체 표기법과 아주 유사
  • JSON 문서 형식은 자바스크립트 객체의 형식을 기반으로 만들어졌다.
  • 자바스크립트의 문법과 굉장히 유사하지만 텍스트 형식일 뿐이다.
  • 다른 프로그래밍 언어를 이용해서도 쉽게 만들 수 있다.
  • 특정 언어에 종속되지 않음
    • 대부분의 프로그래밍 언어에서 JSON 포맷의 데이터를 핸들링 할 수 있는 라이브러리를 제공한다.

기본 자료형

  • 수(Number)
  • 문자열(String)
    • 0개 이상의 유니코드 문자들의 연속. 문자열은 큰 따옴표(")로 구분하며 역슬래시 이스케이프 문법을 지원한다.
  • 참/거짓(Boolean)
    • true 또는 false 값
  • 배열(Array)
    • 0 이상의 임의의 종류의 값으로 이루어진 순서가 있는 리스트. 대괄호로 나타내며 요소는 쉼표로 구분한다.
  • 객체(Object)
    • 순서가 없는 이름/값 쌍의 집합으로, 이름(키)이 문자열이다.
  • null
    • 빈 값으로, null을 사용한다.

Gson

  • Json 구조를 띄는 직렬화된 데이터를 Java 객체로 역직렬화, 직렬화 해주는 Java Library
  • Json Object <-> Java Object
    • 를 도와주는 구글에서 개발한 오픈소스

종속성 추가

dependencies {
  implementation 'com.google.code.gson:gson:2.9.0'
}

사용법 with Kotlin

다음의 Data Class를 직렬화하고 역직렬화를 수행한다.

data class Song(
    val title: String,
    val singer: String,
    var second: Int = 0,
    var playTime: Int = 0,
    var isPlaying: Boolean = false,
    var mills: Float = 0f,
    var music: String = "",
)
  • 직렬화
    1. gson 객체를 생성
      • private val gson = Gson()
    2. gson의 toJson을 통해 직렬화 수행
      • gson.toJson(song)
      • 이렇게 된 데이터는 json형태의 String 문자열로 직렬화 수행되어 저장된다.
  • 역직렬화
    1. gson 객체를 생성
      • private val gson = Gson()
    2. gson의 fromJson을 통해 역직렬화 수행
      • gson.fromJson을(songJson, Song::class.java)
      • 이렇게 된 데이터는 Song Data Class에 맞추어 Data class를 생성하고 반환한다.
    • 일반적으로 변환하고자 하는 Data Class와 Json Object의 Key값은 일치해야 한다.
      • 하지만 특수한 경우 이름을 바꿔야 하는 경우가 있다면,
      • @SerializedName("key")의 어노테이션을 적용하여 사용할 수 있다.

'Android > Android 기초' 카테고리의 다른 글

SharedPreferences  (0) 2022.04.18
MediaPlayer  (0) 2022.04.18
Android: Fragment  (0) 2022.03.23
Android: Data Class  (0) 2022.03.23
Android: Binding  (0) 2022.03.23
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기