JSON/GSON

Jimin·2022년 8월 18일
0

JAVA

목록 보기
12/30

JSON

  • JavaScript Object Notation의 약자
  • 자바 스크립트의 객체 형식을 기반으로 만들어졌다.
  • 인터넷과 통신 네트워크에서 데이터를 전달할 때 사용되는 데이터 형식이다.
  • JSON은 데이터를 표현하는 방식이다.

→ JSON 데이터 형식은 순수하게 데이터만 표현하는 형식이라 심플하고 가벼워서 최근 대부분의 송수신 간에 데이터 교환시 JSON 형식이 많이 채택되고 있다.


XML → JSON 전환

  • XML은 HTML을 기반으로 데이터를 표현하는 언어라 데이터 외의 추가 키워드나 태그들이 많이 첨가되어 무겁다.
  • 적은 양의 데이터 전송시에는 괜찮지만, 양이 많아지면 느려지거나 버벅되는 등, 빠른 정송에 문제가 되었다.
  • JSON의 등장으로 서서히 데이터 전송에 대해서는 가벼운 JSON으로 전환되는 추세이다.

JSON 사용되는 이유

  • java계열 서버 전환이 쉽다.
  • 가장 큰 이유: 빠름!

JSON 데이터 표현 문법

  • name과 value 형식으로 데이터 표현
  • name과 value 구분은 콜론 : 으로 표현
  • name과 문자열은 큰따옴표 ""를 사용해서 표현
  • name-value를 한쌍으로 해서 중괄호 {}로 묶음

자료형

  • 문자열(String)
    큰 따옴표로 묶어주기 → "Hello"
  • 숫자(number)
    숫자 적기 → 123
  • null
    값이 없거나 빈 값으로 설정할 때 사용한다. → null
  • 배열(array)
    대괄호 []로 묶어 여러 개의 값을 나타낼 수 있다. → ["값1", "값2", "값3", "값4"]
  • 객체(object)
    name과 value의 한쌍이 여러 개 표현된 것이다. → {"name":"홍길동", "age":23, "addr":null}

특수문자 표현

  • JSON 문법에서는 큰 따옴표 ""를 사용하므로, 큰 따옴표를 데이터로 사용하고 싶을 때는 큰 따옴표 바로 앞에 \를 사용해야 한다.
    "name":"내 이름은 \"홍길동\"입니다."
    ⇒ 내 이름은 "홍길동"입니다.

JAVA에서 JSON 데이터 만들기

  • JSON의 빠른 활용을 위해 이미 JSON 라이브러리가 만들어져 제공되고 있다.
    • 이 JSON 라이브러리를 이용해서 쉽게 JSON 데이터를 만들 수 있다.

GSON?

  • GSON은 JAVA에서 Json을 파싱하고, 생성하기 위해 사용되는 구글에서 개발한 오픈 소스이다.
  • Java Object → Json 문자열 변환 OK
  • Json 문자열 → Java Object 변환 OK

GSON 라이브러리 추가하기

  1. Maven
<dependency>  
	<groupId>com.google.code.gson</groupId>  
	<artifactId>gson</artifactId>  
	<version>2.8.7</version>
</dependency>
  1. Gradle
dependencies {  
  implementation 'com.google.code.gson:gson:2.8.7'
}

GSON 객체 생성하기

  • GSON 객체를 생성하는 두 가지 방법
  1. new Gson()
  2. new GsonBuilder.create()
  • new GsonBuilder를 이용하여 Gson 객체를 생성하면, 몇가지 옵션을 추가해서 객체를 생성할 수 있다.
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
public class CreateGson {
	public static void main(String[] args) {
    // new        
    Gson gson1 = new Gson();
    
    // GsonBuilder        
    Gson gson2 = new GsonBuilder().create();        
    Gson gson3 = new GsonBuilder().setPrettyPrinting().create();            
    }
}

Json 생성하기

jsonObject.addProperty("name", "anna"); 로 JsonObject 객체를 생성하여 이 객체에 프로퍼티 추가

import com.google.gson.Gson;
import com.google.gson.JsonObject;
public class GsonExample {     
	public static void main(String[] args) {
    	Gson gson = new Gson();         
        // Json key, value 추가        
        JsonObject jsonObject = new JsonObject();
        jsonObject.addProperty("name", "anna");
        jsonObject.addProperty("id", 1);
        
        // JsonObject를 Json 문자열로 변환        
        String jsonStr = gson.toJson(jsonObject);         
        // 생성된 Json 문자열 출력        S
        ystem.out.println(jsonStr); // {"name":"anna","id":1}            
    }
  }

Object → Json 변환하기

gson.toJson(Object) → Json 문자열을 리턴

import com.google.gson.Gson; 

public class ObjectToJson {
	public static void main(String[] args) { 
    // Student 객체 생성        
    Student student = new Student(1, "Anna");         
    // Gson 객체 생성        
    Gson gson = new Gson();         
    // Student 객체 -> Json 문자열        
    String studentJson = gson.toJson(student);         
    // Json 문자열 출력        
    System.out.println(studentJson);  // {"id":1,"name":"Anna"}    
  }
}

Json → Object 변환하기

gson.fromJson(Json문자열, Object.class) → Object 리턴

import com.google.gson.Gson; 

public class JsonToObject {    
	public static void main(String[] args) {         
    // Json 문자열        
    String jsonStr = "{\"id\":1,\"name\":\"Anna\"}";         
    // Gson 객체 생성        
    Gson gson = new Gson();         
    // Json 문자열 -> Student 객체        
    Student student = gson.fromJson(jsonStr, Student.class);         
    // Student 객체 toString() 출력        
    System.out.println(student); // Student [id=1, name=Anna]    
   }
}

출처

https://sidepower.tistory.com/234
https://hianna.tistory.com/629

profile
https://github.com/Dingadung

0개의 댓글