개발공부

JSON 이해하기

환타몬 2023. 9. 17. 23:07

JSON

JSON(JavaScript Object Notation)과 XML(eXtensible Markup Language)은 둘 다 구조화된 데이터를 표현하고 전송하기 위한 데이터 형식입니다. 그 중에서 JSON에 대해서 알아보려고 합니다. 

 

JSON은 경량의 데이터 교환 형식으로, 텍스트 기반의 구조화된 데이터를 표현합니다. 

JSON은 가독성이 좋고, 다양한 프로그래밍 언어와 호환되기 때문에 널리 사용되고 있습니다. JSON 데이터 형식의 구조는 다음과 같습니다.

 

1. 객체 (Object) : JSON 객체는 중괄호 {}로 묶인 키-값 쌍의 집합입니다.

키는 문자열이고, 값은 JSON 데이터 형식 중 하나가 될 수 있습니다.

키와 값은 콜론(:)으로 구분되며, 여러 개의 키-값 쌍은 쉼표(,)로 구분됩니다.

 

2. 배열(Array) : JSON 배열은 대괄호 []로 묶인 값들의 순서 있는 리스트입니다.

배열의 요소는 JSON 데이터 형식 중 하나가 될 수 있으며, 여러 개의 요소는 쉼표(,)로 구분됩니다.

 

예시를 들면,

{
  "name" : "홍길동"
, "age"    : 30
, "emial" : example@example.com
}

와 같은 형식을 예시로 들 수 있습니다.

 

데이터 타입으로는

문자열(String), 숫자(Number), 불리언(Boolean), 객체(Object), 배열(Array), 널(Null)이 있습니다.

 

Gson API 활용하기

자바에서 JSON 데이터를 다루는 방법은 여러가지가 있지만, 일반적으로 라이브러리를 사용해서 JSON을 쉽게 다룰 수 있습니다. 대표적인 라이브러리로는 Gson과 Jackson이 있습니다.

 

JSON을 Java의 Object 형식으로 개발자가 직접 형변환을 시켜주는 것보다는, API를 이용해서 쉽게 형변환을 시켜줄 수 있습니다.

 

1. URL 접속

https://mvnrepository.com/artifact/com.google.code.gson/gson/2.8.9

해당 링크로 들어가서 Gson을 자신이 사용하고 있는 빌드툴에 맞게끔 복사하여 자신의 프로젝트에 다운로드 시켜 줍니다.

저 같은 경우는 Gradle을 사용하고 있기 때문에 gradle로 진행하겠습니다.

 

2. Gradle build

implementation group: 'com.google.code.gson', name: 'gson', version: '2.8.9'

위와 같이 gson을 dependencies에 넣어주시고 build를 해주시고, 아무 문제가 없다면 정상적으로 빌드되는 것을 확인하실 수 있습니다.

 

3. Member 클래스 생성 

public class Member {
    private String name;
    private int age;
    private String email;

    public Member() {
    }

    // 오버로딩
    public Member(String name, int age, String email) {
        this.name = name;
        this.age = age;
        this.email = email;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    @Override
    public String toString() {
        return "Member{" +
                "name='" + name + '\'' +
                ", age=" + age +
                ", email='" + email + '\'' +
                '}';
    }
}

 

4. 객체 생성

import com.google.gson.Gson;
import org.example.model3.Member;

public class GsontoJson {
    public static void main(String[] args) {
        Member mvo = new Member("홍길동", 30, "eam@exm.com");
        // JSON -> {"name" : 홍길동, "age": 30, "email": "eam@exm.com"}

        //객체 생성
        Gson gson = new Gson();

        //Object(Member) => JSON
        String json = gson.toJson(mvo);
        System.out.println("json = "+ json);
    }
}

위와 같이 member 객체를 생성해주고, Gson을 이용하여 해당 member  객체를 json 타입으로 만들어줍니다.

 

5. 결과 확인

json = {"name":"홍길동","age":30,"email":"eam@exm.com"}

위와 같은 결과를 확인할 수 있습니다.