CS/Web
JSON, 왜 사용할까?
dokkisan
2023. 11. 28. 21:18
아래와 같은 질문을 받는다면 어떻게 대답할 수 있을까?
JSON 데이터 포맷을 사용하여 복잡한 데이터 구조를
어떻게 효율적으로 표현하고 관리할 수 있는지 설명해주세요.
그동안 4개의 프로젝트를 진행해왔지만 한 번도 JSON에 대해 공부한 적은 없었다.
위 질문에 답변하기 위해 학습하며, 알음알음 배워서 썼던 JSON의 이해도를 높이고자 관련 지식을 정리해 보았다.
데이터 포맷이란?
JSON과 같은 데이터 포맷은 단순한 문자열뿐만 아니라, 표 형식의 데이터나 객체처럼 복잡한 데이터 구조를 저장하고 관리하기 위해 사용된다.
XML과 CSV도 널리 사용되는 데이터 포맷으로, 각기 다른 특성을 가지고 있다.
XML
- 구조화된 데이터를 표현하기 위한 마크업 언어로, HTML과 유사한 형태를 가진다.
- 데이터의 시작과 끝을 태그로 명시한다.
<데이터이름>값</데이터이름>
<데이터이름>값</데이터이름>
<데이터이름>값</데이터이름>
- 객체를 표현하는 것도 가능하며 JavaScript를 사용하면 객체로 쉽게 변환이 가능하다고 한다.
- 예를 들어, 회원 정보를 다음과 같이 표현할 수 있다:
<member>
<name>Hana</name>
<course>Backend</course>
<language>Java</language>
</member>
- XML의 단점은 용량을 많이 차지하고 작성과 파싱하는데 시간이 길어질 수 있다는 점이다.
CSV
- 데이터를 쉼표로 구분해 저장하는 파일 포맷이다.
- 표 형식으로 데이터를 보관하기에 용이하다.
- 데이터베이스의 테이블을 CSV로 쉽게 변환할 수 있으며, 반대의 경우도 마찬가지이다.
- 경험 상 CSV는 대용량 데이터를 업데이트 할 때 주로 사용했다.
Name, Course, Year
Hana, Backend, 2023
Dul, Frontend, 2023
Dokkisan, FullStack, 2024
- CSV는 단순한 2차원 형태를 저장하는 데에는 유리하지만, 고차원적인 데이터를 저장하는 데에는 한계가 있다.
JSON
- 경량의 데이터 교환 포맷으로, name-value 쌍으로 이루어진 객체 표기법을 사용한다.
- 파싱이 용이하고, 데이터 전송 시 효율적이다.
- 예를 들어, 세 명의 회원 정보를 클라이언트로부터 받아온다면 다음과 같이 JSON 포맷으로 표현할 수 있다.
{
"member": [
{"name": "Hana", "course": "Backend", "year": 2023},
{"name": "Dul", "course": "Frontend", "year": 2023},
{"name": "Dokkisan", "course": "Fullstack", "year": 2024}
]
}
- 위와 같이 JSON은 복잡한 데이터 구조를 중첩된 형태로 간결하게 표현할 수 있다.
JSON의 장점
- JSON은 JavaScript Object Notation, '자바스크립트 객체 표기법'을 의미한다.
- 자바스크립트의 문법을 따르고 있지만, 언어와 플랫폼에 독립적이기 때문에 모든 프로그래밍 언어에서 쉽게 사용할 수 있다.
- JSON의 단순한 구조를 통해 다른 포맷보다 적은 양의 데이터를 담게 되므로, 네트워크 대역폭을 절약할 수 있으며 처리 속도도 빠르다.
- 위에서 살펴본 것 처럼, JSON은 name-value가 한 쌍의 형태로 복잡한 계층적 구조를 간결하고 명확하게 표현할 수 있으며, 이 구조는 인간과 기계 모두가 읽기 쉬운 단순한 형태로 파싱을 용이하게 할 수 있다는 장점이 있다.
- 따라서 JSON은 서버와 클라이언트가 통신하는데 효율적인 경량 데이터 전송 포맷이기 때문에 데이터 전송의 표준 방식으로 자리잡게 되었다고 생각한다.
마지막으로 질문에 대해 정리한 답변이다.
JSON은 경량의 데이터 교환 형식이며, 데이터를 name-value 쌍으로 표현한다. 이 형식의 가장 큰 장점은 간결함과 가독성이다.
복잡한 데이터 구조의 경우, JSON은 중첩된 객체와 배열을 사용하여 다양한 수준의 데이터를 구조화한다. 예를 들어, 한 사용자가 여러 주소를 가지고 있다면, 이러한 주소들을 배열 안에 객체로 표현하여 하나의 JSON 객체에 포함시킬 수 있다. 이는 데이터의 계층적 관계를 명확히 하며, 개발자가 필요한 정보에 쉽게 접근할 수 있게 해준다.
JSON의 중요한 특성 중 하나는 경량 데이터 포맷이라는 점이다. 이 특성은 특히 웹 API와 같은 네트워크 통신에서 큰 이점을 제공한다. JSON 형식의 데이터는 텍스트 기반으로, 복잡한 데이터 구조를 간결하고 효율적으로 표현할 수 있다. 이러한 경량성은 네트워크 대역폭을 절약하며, 데이터 전송 속도를 향상시킨다. 따라서, JSON 형식의 데이터는 네트워크를 통해 빠르고 효율적으로 전송할 수 있으며, 수신 측에서는 적은 자원을 사용하여 이 데이터를 쉽게 처리할 수 있다.
또한, JSON은 언어와 플랫폼에 독립적이기 때문에 다양한 프로그래밍 환경에서 널리 사용된다. 대부분의 프로그래밍 언어는 JSON을 파싱하고 생성하는 데 필요한 라이브러리를 내장하고 있거나, 외부 라이브러리를 통해 지원하고 있다.
결론적으로, JSON은 복잡한 데이터 구조를 간결하고 효율적으로 표현하며, 네트워크를 통한 데이터 교환에 있어서도 매우 효과적인 포맷이다. 이러한 특성으로 인해, 현대 웹 개발에서 JSON은 데이터 표현과 교환의 표준으로 자리 잡았다.
참고 자료
https://www.json.org/json-ko.html
JSON
JSON (JavaScript Object Notation)은 경량의 DATA-교환 형식이다. 이 형식은 사람이 읽고 쓰기에 용이하며, 기계가 분석하고 생성함에도 용이하다. JavaScript Programming Language, Standard ECMA-262 3rd Edition - December 1
www.json.org
https://youtu.be/1ID6pfTViXo?si=sOsJqgMbAkMnhB98