CS ( Computer Science )/네트워크 (Networking)

[Net] JSON

JABHACK 2024. 11. 29. 12:29

JSON

📌 JSON은 클라이언트와 서버가 통신할 때 사용하는 데이터 양식이다. 클라이언트와 서버가 사용하는 언어에 관계 없이 통일된 데이터를 주고받을 수 있도록 만들어준다.

  • 과거 웹 초기 시절부터 사용된 XML 은 헤더와 태그 등의 여러 요소로 가독성이 떨어지고, 불필요한 용량을 잡아먹는다는 단점을 항상 지적받았다. 이에 대응해 간결하고 통일된 양식으로 각광을 받고 있는 것이 JSON이다.
  • 키-값 쌍의 구조로 표현하는 텍스트 기반 데이터 형식이다.

요약

  • JSON은 사람, 기계 모두 이해하기 쉬우며 용량이 작다.
  • XML을 대체해서 데이터 전송 등에 많이 사용한다.
  • 마치 전세계 공통어로 영어를 사용하는것처럼 Web의 세계에서는 JSON(JavaScript Object Notation)을 공통어로 사용한다.

클라 TO 서버 / 서버 TO 서버 모두 사

 

[1]  JSON의 배달 비유:

  1. JSON = 택배 상자
    • JSON은 데이터를 담아 보내는 포장 상자와 같습니다.
    • 상자 안에 다양한 데이터(키-값 쌍)가 들어있으며, 이 데이터를 꺼내기 위해 상자 구조를 이해해야 합니다.
  2. 키 = 상자에 붙인 라벨
    • 키는 데이터의 이름표로, 택배 상자에 붙이는 "내용물 라벨"과 같습니다.
    • 예: "name": "Alice"는 "이름 라벨에 'Alice'라고 적음"과 같음.
  3. 값 = 상자 속 물건
    • 값은 실제로 상자 안에 들어 있는 데이터입니다.
    • 예: "age": 25는 "라벨 'age'에 해당하는 물건은 25"라는 의미.
  4. 배열 = 상자 속 묶음 물건
    • 배열은 상자 안에 같은 종류의 물건이 여러 개 담겨 있는 모습과 같습니다.
    • 예: "hobbies": ["reading", "coding"]는 "취미 물건 목록".

 

[2]  JSON의 구조:

{
  "user": [
    {
      "first_name": "wonuk",
      "last_name": "Hwang",
      "age": 100,
      "phone_agree": false,
      "hobby": ["Java", "Spring"]
    },
    {
      "firstName": "sparta",
      "lastName": "Team",
      "age": 200,
      "phone_agree": true,
      "hobby": ["React", "Spring", "Node"]
    },
  ]
}
  • snake_case, camelCase 모두 사용이 가능하다.
    • 우리가 만드는 Application 내에서 변환해주는 무엇인가가 있다.
  • key-value 형태로 구성되어 있다.
  • null, number, string, array, object, boolean 형태의 데이터를 사용할 수 있다.
MSA(MicroService Architecture)를 가지게 되면 구성된 Application마다 어떠한 언어를 사용하는지에 상관없이 서로 통신을 할 수 있는데 이것이 가능한 이유는 JSON 형태로 데이터 통신을 하기 때문이다.

 

 

MSA ( MicroService Architecture )

📌 MSA는 애플리케이션을 독립적으로 배포 및 실행 가능한 작은 서비스 단위로 나누어 개발하는 소프트웨어 아키텍처 스타일입니다.

  • 각 마이크로서비스는 특정 비즈니스 기능을 담당하며, 서로 독립적으로 배포, 수정, 확장할 수 있습니다.
  • 소프트웨어를 작은 단위의 독립적인 서비스로 분리해 개발 및 운영 효율성을 높이는 구조입니다.
  • 참고

'CS ( Computer Science ) > 네트워크 (Networking)' 카테고리의 다른 글

[Net] HTTP Header  (0) 2024.12.01
[Net] HTTP Method  (2) 2024.11.30
[Net] HTTP  (0) 2024.11.29
[Net] Web 기초  (1) 2024.11.29
[Net] 네트워크  (1) 2024.11.29