JSON이란? (with XML)

기가진이·2023년 5월 9일
2

개념정리

목록 보기
1/2

JSON

JavsScript Object Notation의 줄임말로, 해석하면 '자바 스크립트 객체 표기법' 이다.



💻 개발자들은 개발을 할 때, 어떤 언어에서든지 데이터 구조와 실제 데이터를 다른 언어 및 플랫폼에서 해석 가능한 형식으로 전송할 수 있어야 하는데, JSON은 이를 가능하게 해주는 ’데이터 교환 포맷’이다.


💡 결론부터 말해보자면, JSON은 데이터를 표시하는 표현 방식이라는 것💡



특징

  • 클라이언트와 서버 간의 교류에서 일반적으로 많이 사용된다.

  • JS 객체 표기법과 아주 유사하다.

    • JSON 형식은 JS의 객체 형식을 기반으로 만들어졌기 때문에 특정한 언어에 종속되지 않으며, 대부분의 프로그래밍 언어에서 JSON 포맷의 데이터를 핸들링 할 수 있는 라이브러리를 제공한다.
  • 문자열 형태로 존재하기 때문에 네트워크를 통해 전송할 때 아주 유용하다.

  • JSON은 순수히 데이터 포맷이기 때문에 메서드는 담을 수 없으며 프로퍼티만 담을 수 있다.

  • JSON은 문자열과 프로퍼티의 이름 작성시 큰 따옴표만을 사용해야 하고 작은 따옴표는 사용불가하다.

  • JSON은 JSON내부에 포함할 수 있는 모든 형태의 데이터 타입을 취할 수 있다. 즉, 배열이나 오브젝트 외에도 단일 문자열이나 숫자 또한 유효한 JSON 오브젝트가 된다.

  • 자바스크립트에서 오브젝트 프로퍼티가 따옴표로 묶이지 않을 수도 있는 것과는 달리, JSON에서는 따옴표로 묶인 문자열만이 프로퍼티로 사용될 수 있다.





가장 자주 사용되는 JSON 활용법

  • 사용자 생성 데이터로부터 JSON 객체를 생성할 떼

  • 시스템 간에 데이터를 전송할 때

  • 애플리케이션용 데이터를 구성할 때

  • 복잡한 데이터 모델을 간소화할 때





JSON 사용법 예시

(문자열)

{"name":"jini"}

(숫자)

{
	"num1":1,
	"num2":2,
	"num3":3
}

(boolean)

{"isOnclick":false}

(Null)

{"name":null}

(객체)

{
"Person": {"name":"jini", "age":"22", "city":"seoul"}
}

(배열)

{
	"Person" :[ 
	{
	 "name" : "jini", 
	 "age" : 22, 
	},
	
	{
	 "name" : "yoon", 
	 "age" : 18
	}] 
}



JSON과 XML

  • JSON은 XML의 대안으로서 데이터를 더 쉽게 다루기 위해 고안되면서부터 시작되었다.

XML이란?

EXtensible Markup Language의 약자로, HTML과 매우 비슷한 문자 기반의 마크업 언어(text-based markup language)이다.



XML 특징

  • 사람과 기계가 동시에 읽기 편한 구조로 되어 있다.
  • HTML처럼 데이터를 보여주는 목적이 아니라 데이터를 저장하고 전달할 목적으로만 만들어졌다.
  • XML 태그는 HTML 태그처럼 미리 정의되어 있지 않고, 사용자가 직접 정의할 수 있다.



JSON과 XML의 차이점

  1. JSON은 종료 태그를 사용하지 않는다.
  2. JSON의 구문이 XML의 구문보다 더 짧다.
  3. JSON 데이터가 XML 데이터보다 더 빨리 읽고 쓸 수 있다.
  4. XML은 배열을 사용할 수 없지만, JSON은 배열을 사용할 수 있다.
  • XML 예제
    <cat>
    	<name>뚜뚜</name>
    	<age>1</age>
    </cat>
  • JSON 예제
       {
       	"name": "뚜뚜",
       	"age": 1
       }

그래서 둘 중 어떤 것을 사용하는가?

JSON은 전송받은 데이터의 무결성을 사용자가 직접 검증해야 한다. 따라서 데이터의 검증이 필요한 곳에서는 스키마를 사용하여 데이터의 무결성을 검증할 수 있는 XML이 아직도 많이 사용되고 있다.




출처

profile
개발 learning중. . .

0개의 댓글