Everyday Dev System

왜 HTTP 통신에서 Body에 Json을 주로 활용하는가? 본문

나의 호기심

왜 HTTP 통신에서 Body에 Json을 주로 활용하는가?

chaeyoung- 2023. 6. 21. 23:42

 

 

JSON은 Java Script에 있는 타입이므로, Java 언어로 바로 읽을 수 없습니다.

또한, JSON은 텍스트 기반이므로 어떠한 프로그래밍 언어에서도 JSON 데이터를 읽고 사용할 수 있습니다.

 

 

HTTP에서는 전송 계층 프로토콜로 TCP를 사용하고,

네트워크 계층 프로토콜로 IP를 사용하는데 이를 합쳐 TCP/IP라고 부른다.

 

 

 

JSON은 XML의 대안으로서 좀 더 쉽게 데이터를 교환하고 저장하기 위하여 고안되었습니다.

 

 

XML보다 JSON이 더 가볍다.

 

 

자세한 내용은 아래와 같습니다.

 

예전에는 xml이 널리 데이터를 전송할 때 이용되었으나, Json은 xml에 비해 가볍다는 특징으로 주목받았습니다.

또한, 이러한 가볍다는 장점으로 모바일 어플리케이션 중심인 요즘에 굉장히 플러스 요인으로 자리했습니다.

이러한 배경으로 인해 xml 대신 json을 많이 쓰는 추세입니다.

 

그러나, 형식을 엄격하게 갖춰야 하는 프로그램 에서는 XML이 여전히 활용되고 있습니다.

 

 

Json을 네트워크 단에서 어떻게 쪼개졌다가 합쳐지는가?

아직 구글링을 해도 나오지 않아서 모색중

 

 

JSON의 형식

{
    "name" : "Richard rob",
    "age" : 66,
    "from" : "USA",
    "education" : ["San Francisco State University", "Newport Harbor High School"]
}

Key - Value형식으로 되어 있으며,

Value에는  Char, Boolean, Int, Double, String, JsonArray, JsonObject 등의 데이터가 저장됩니다.

JsonArray는 Key 값이 따로 존재하지 않을 수 있습니다. 배열이기 때문에 key 값 대신 index로 데이터를 추출 가능합니다.

 

 

 

 

 

 

 

JSON의 특징

1. JSON은 자바스크립트를 확장하여 만들어졌습니다.
2. JSON은 자바스크립트 객체 표기법을 따릅니다.
3. JSON은 사람과 기계가 모두 읽기 편하도록 고안되었습니다. (가독성)
4. JSON은 프로그래밍 언어와 운영체제에 독립적입니다.

 

 

 

 

 

 

Jackson 라이브러리

JSON 데이터 구조를 처리해주는 라이브러리입니다.

java의 객체를 Json 타입의 String으로 변환 및 반대도 가능합니다.

Spring 3.0.x 버전 이후부터 해당 라이브러리를 추가하지 않아도 자동으로 추가해줍니다.

 

 

 

 

 

 

 

 

GSON 이란?  → Library

gson과 json의 차이가 무엇일까?

왜 gson보다 json을 통상적으로 활용할까?

 

Gson 은 Json 데이터를 이용하기 위해 만들어진 라이브러리 중 하나로, Google에서 제작했습니다.

 

1.  JAVA / Kotlin 객체 → Json data

2.  Json data  → JAVA / Kotlin 객체

로 손쉽게 변환하여 접근하고 사용할 수 있습니다. 

 

gson은 json구조를 띄는 직렬화된 데이터를 JAVA의 객체로 역직렬화, 직렬화 해주는 자바 라이브러리 입니다.

 

 

예제 코드 :

import com.google.gson.Gson;
import com.google.gson.GsonBuilder;

import com.java.ex.Student;

public class Main {
    public static void main(String[] args) {
        String jsonStringdata = "{'age':22, 'name':'lcy'}";
        
        Gson gson = new GsonBuilder().create();
        Student student = gson.fromJson(jsonStringdata, Student.class);
                
        student.getInfo();
    }
}

1) String 타입으로 jsonObject를 생성합니다.

 

2) Gson 타입의 객체를 생성합니다.

    Gson gson = new GsonBuilder().create();

 

3) 생성한 객체 gson의 fromJson 메서드를 통해 1)을 Student 객체에 저장합니다.

  Student student = gson.fromJson(jsonStringdata, Student.class);

 

fromJson() 메소드의

첫번째 인자로는 json구조를 띈 String을,

두번째 인자로는 변환을 원하는 Java의 Class를 넘겨주면 됩니다. 

 

 

즉, Json이란 위에서 서술한 데이터의 형태에 불과하며,
그것을 사용하는 것은 어떠한 라이브러리를 쓰는지에 달려있습니다.

 

 

 

 


references :

https://galid1.tistory.com/501

https://no-dev-nk.tistory.com/6

http://www.tcpschool.com/json/json_intro_basic