[CS지식의 정석] JSON (feat. 로켓CV프로젝트에서 XML대신 JSON을 사용한 이유)

박두팔이·2023년 8월 8일
0

JSON?

Javascript 객체 문법으로 구조화된 데이터 교환형식이다.

  1. Javascript 객체문법이다.
  • 키(key)와 값(value)으로 구성되어있다.
  • 키가 중복되면 나중에 선언된 키에 값이 덮어쓰기가 된다.
{
    "name" : "euni",
    "name" : "zzang",
    "name" : "king"
}

// name이란 key가 중복되었을 때, 처음 선언된 euni가 아닌 zzang이 출력된다.
  1. 데이터를 교환하는 형식이다.
  2. 객체, 해시테이블, 딕셔너리 등으로 여러 언어에서 변환되어 사용이 가능하다.
    ex) javascript에서는 javascript dbject, python에서는 dict로 변환되어 사용된다.
  3. 하나의 key값에 여러개의 value가 들어갈 경우 대괄호로 묶어 배열로 표현할 수 있다.
{
	"list" : [ // 대괄호를 묶어 여러개의 객체를 생성
		{
			"name" : "홍길동1",
            "song" : "아버지를 아버지라 부르지 못하고"
		},
        {
        	"name" : "홍길동2",
			"song" : "어머니를 어머니라 부르지 못함" 
        }
   	] 
}

JSON 타입

javascript object와 유사하지만 undefined, 메서드 등을 포함할 수 없다.

  • 포함가능한 데이터 타입
    • 문자열
    • 참/거짓
    • 배열
    • 객체
    • null

JSON 직렬화 / 역직렬화

직렬화?

외부시스템에서 사용할 수 있도록 객체를 바이트 형태로(String, 문자열) 데이터를 변환하는 기술이다.

역직렬화?

내부시스템안에서 사용할 수 있도록 바이트 형태를 객체로 변환한 것.


JSON의 장점?

  • 프로그래밍 언어와 프레임워크 등에 독립적이다.
  • 따라서 서로 다른 시스템간에 데이터를 교환하기 용이하다.
  • 주로 API의 반환형태, 시스템을 구성하는 설정파일에 활용된다.

😄 나는 프로젝트에서 XML이 아닌 JSON을 왜 사용했나?

프로젝트를 진행하면서 나는 postman으로 json타입 데이터를 교환한 경험이 있다.

사실 부트캠프에서 json 타입을 처음부터 배워왔기 때문에 아무 의심없이 사용한 것이었다. '데이터를 교환하는 방식은 XML도 있는데 왜 우리프로젝트는 json을 사용했을까?' 에 대한 대답을 비로소 할 수 있게되어 개인적으로 기쁘다.

1. JSON과 XML의 기본 개념

  • JSON(JavaScript Object Notation)
  • XML(eXtensible Markup Language)
    • 다목적 마크업 언어다. 데이터를 표현/전송하기 위한 규칙을 정의하고 HTML과 유사한 형식을 가지고 있어 구조화된 데이터를 표현하기 위해 태그를 사용한다.

2. JSON과 XML의 주요 차이점

항목JSONXML
데이터 형식자바스크립트 객체와 배열을 이용하여 데이터 표현태그를 이용하여 데이터 표현
가독성간결한 구조와 키-값 쌍으로 가독성 우수여는 태그와 닫는 태그로 가독성 감소 (중첩 시 복잡)
용량작은 크기로 네트워크 전송 시 용량 절약태그와 속성으로 인해 크기가 커질 수 있음
  • 코드로 살펴본 차이점
// JSON 예시
{
  "name": "John",
  "age": 30,
  "city": "New York"
}

// XML 예시
<person>
  <name>John</name>
  <age>20</age>
  <city>New York</city>
</person>

3. 결론 : JSON을 사용한 이유

  • XML보다 가볍다. JSON은 작은 크기로 데이터를 표현하기 때문에 네트워크 전송 및 처리 시간을 단축시킨다.
  • 파싱이 빠르고 웹 애플리케이션의 성능을 향상시킨다.
  • JSON은 자바스크립트 객체 형태로 데이터를 사용하므로, 웹 애플리케이션과의 호환성이 좋다.
profile
기억을 위한 기록 :>

0개의 댓글