JSON이란? 데이터 교환을위한 더 나은 형식

JavaScript Object Notation은 키-값 쌍 및 정렬 된 목록을 기반으로하는 구조화 된 데이터의 스키마없는 텍스트 기반 표현입니다. JSON은 JavaScript에서 파생되었지만 기본적으로 또는 대부분의 주요 프로그래밍 언어의 라이브러리를 통해 지원됩니다. JSON은 일반적으로 웹 클라이언트와 웹 서버간에 정보를 교환하는 데 사용되지만 배타적이지는 않습니다. 

지난 15 년 동안 JSON은 웹에서 유비쿼터스가되었습니다. 오늘날 거의 모든 공개적으로 사용 가능한 웹 서비스에 대한 선택 형식이며 개인 웹 서비스에도 자주 사용됩니다.

JSON의 인기는 또한 많은 데이터베이스에서 기본 JSON 지원을 가져 왔습니다. PostgreSQL 및 MySQL과 같은 관계형 데이터베이스는 이제 JSON 데이터 저장 및 쿼리를위한 기본 지원과 함께 제공됩니다. MongoDB 및 Neo4j와 같은 NoSQL 데이터베이스도 JSON을 지원하지만 MongoDB는 뒤에서 약간 수정 된 이진 버전의 JSON을 사용합니다.

이 기사에서는 JSON을 간략하게 살펴보고 JSON의 출처, XML에 비해 장점, 단점, 사용해야하는 경우 및 대안을 고려해야하는시기에 대해 논의합니다. 하지만 먼저 JSON이 실제로 어떻게 생겼는지에 대해 자세히 알아 보겠습니다.

JSON 예

다음은 JSON으로 인코딩 된 데이터의 예입니다.

{

  “firstName”:“Jonathan”,

  “성”:“프리먼”,

  "loginCount": 4,

  "isWriter": 참,

  "worksWith": [ "Spantree Technology Group", ""],

  "애완 동물": [

    {

      “이름”:“릴리”,

      "유형": "너구리"

    }

  ]

}

위의 구조는 사람의 일부 속성을 명확하게 정의합니다. 여기에는 이름과 성, 그 사람이 로그인 한 횟수,이 사람이 작가인지 여부, 그 사람이 함께 일하는 회사 목록, 그 사람의 애완 동물 목록 (이 경우 하나만)이 포함됩니다. 위와 같은 구조는 서버에서 웹 브라우저 또는 모바일 애플리케이션으로 전달 될 수 있으며, 그런 다음 나중에 참조 할 수 있도록 데이터를 표시하거나 저장하는 등의 작업을 수행합니다.

JSON은 문자열, 숫자, 부울, 목록, 개체 및 null과 같은 최소 수의 값 유형이있는 일반 데이터 형식입니다. 표기법은 JavaScript의 하위 집합이지만 이러한 유형은 모든 공통 프로그래밍 언어로 표시되므로 JSON은 언어 차이를 통해 데이터를 전송하기에 좋은 후보가됩니다.

JSON 파일

JSON 데이터는 .json 확장자로 끝나는 파일에 저장됩니다. JSON의 사람이 읽을 수있는 정신에 따라 이들은 단순한 일반 텍스트 파일이며 쉽게 열고 검사 할 수 있습니다. SQLizer 블로그에서 설명했듯이, 이름을 지정할 수있는 거의 모든 언어가 일반 텍스트 파일을 읽고 처리 할 수 ​​있고 인터넷을 통해 쉽게 보낼 수 있기 때문에 이것은 JSON의 광범위한 상호 운용성의 핵심이기도합니다.

왜 JSON을 사용해야합니까? 

JSON의 유용성과 중요성을 이해하려면 웹에서 상호 작용의 역사에 대해 조금 이해해야합니다. 

2000 년대 초에 웹에서의 상호 작용이 변화하기 시작했습니다. 당시 브라우저는 주로 정보를 표시하는 멍청한 클라이언트 역할을했으며 서버는 표시 할 콘텐츠를 준비하기 위해 모든 노력을 기울였습니다. 사용자가 브라우저의 링크 나 버튼을 클릭하면 요청이 서버로 전송되고 서버는 필요한 정보를 HTML로 준비하고 브라우저는 HTML을 새 페이지로 렌더링합니다. 이 패턴은 느리고 비효율적이어서 페이지의 한 섹션 만 변경된 경우에도 브라우저가 페이지의 모든 것을 다시 렌더링해야했습니다.

전체 페이지를 다시로드하는 데 비용이 많이 들었 기 때문에 웹 개발자는 전체 사용자 경험을 개선하기 위해 최신 기술을 모색했습니다. 한편, 최근 인터넷 익스플로러 5에 도입 된 페이지가 표시되는 동안 백그라운드에서 웹 요청을 수행하는 기능은 표시를 위해 데이터를 점진적으로로드하는 실행 가능한 접근 방식임을 입증했습니다. 페이지의 전체 콘텐츠를 다시로드하는 대신 새로 고침 버튼을 클릭하면 백그라운드에서로드되는 웹 요청이 트리거됩니다. 콘텐츠가로드되면 브라우저의 범용 프로그래밍 언어 인 JavaScript를 사용하여 데이터를 조작, 저장 및 페이지에 표시 할 수 있습니다.

REST 대 SOAP : JSON 연결

원래이 데이터는 SOAP (Simple Object Access Protocol)라는 메시징 프로토콜을 사용하여 XML 형식 (예는 아래 참조)으로 전송되었습니다. 그러나 XML은 장황하고 JavaScript에서 관리하기가 어려웠습니다. JavaScript에는 이미 언어 내에서 데이터를 표현하는 방법 인 객체가 있었기 때문에 Douglas Crockford는 해당 표현식의 하위 집합을 새로운 데이터 교환 형식의 사양으로 가져 와서 JSON이라고 명명했습니다. JSON은 사람들이 읽고 브라우저가 파싱하기 훨씬 쉬웠습니다.

2000 년대 동안 Representational State Transfer 또는 REST라고하는 또 다른 웹 서비스 기술이 데이터 전송 목적으로 SOAP를 추월하기 시작했습니다. REST API를 사용한 프로그래밍의 가장 큰 장점 중 하나는 XML뿐 아니라 JSON 및 HTML까지 다양한 데이터 형식을 사용할 수 있다는 것입니다. 웹 개발자가 XML보다 JSON을 선호하게되면서 SOAP보다 REST를 선호하게되었습니다. Kostyantyn Kharchenko가 Svitla 블로그에 올린 것처럼 "여러 가지면에서 REST의 성공은 다양한 플랫폼에서 쉽게 사용할 수있는 JSON 형식 때문입니다."

오늘날 JSON은 웹 및 모바일 클라이언트와 백엔드 서비스간에 데이터를 교환하기위한 사실상의 표준입니다. 

JSON 대 XML

위에서 언급했듯이 JSON의 주요 대안은 XML입니다. 그러나 XML은 새로운 시스템에서 점점 덜 보편화되고 있으며 그 이유를 쉽게 알 수 있습니다. 아래는 위에서 본 데이터의 버전이며 이번에는 XML로 제공됩니다.

  홍옥

  자유민

  4

  진실

    Spantree 기술 그룹

      릴리

      너구리

XML은보다 장황 할뿐만 아니라 (이 경우 정확히 두 배) JavaScript 친화적 인 데이터 구조로 구문 분석 할 때 약간의 모호함을 제공합니다. XML을 JavaScript 객체로 변환하려면 수십 줄에서 수백 줄의 코드가 필요할 수 있으며 궁극적으로 구문 분석되는 특정 객체를 기반으로 사용자 정의해야합니다. JSON을 JavaScript 객체로 변환하려면 코드 한 줄이 필요하며 파싱되는 객체에 대한 사전 지식이 필요하지 않습니다.

JSON의 한계

JSON은 많은 프로그래밍 언어에서 작업하기 쉬운 비교적 간결하고 유연한 데이터 형식이지만 형식에는 몇 가지 단점이 있습니다. 다음은 5 가지 주요 제한 사항입니다. 

  1. 스키마가 없습니다. 한편으로는 원하는 방식으로 데이터를 표현할 수있는 완전한 유연성이 있습니다. 다른 한편으로는 실수로 기형 데이터를 매우 쉽게 생성 할 수 있음을 의미합니다.
  2. 단 하나의 숫자 유형 : IEEE-754 배정 밀도 부동 소수점 형식. 그것은 꽤 입이 많지만 단순히 많은 프로그래밍 언어에서 사용할 수있는 다양하고 미묘한 숫자 유형을 이용할 수 없다는 것을 의미합니다.
  3. 날짜 유형이 없습니다. 이 생략은 개발자가 날짜의 문자열 표현을 사용하여 형식 불일치를 초래하거나 epoch (1970 년 1 월 1 일) 이후 밀리 초 형식으로 날짜를 표현해야 함을 의미합니다.
  4. 댓글이 없습니다. 이로 인해 필드에 인라인 주석을 달 수 없으므로 추가 문서가 필요하고 오해의 가능성이 높아집니다.
  5. 다변. JSON은 XML보다 덜 장황하지만 가장 간결한 데이터 교환 형식은 아닙니다. 대용량 또는 특수 목적 서비스의 경우보다 효율적인 데이터 형식을 사용하고 싶을 것입니다.

언제 JSON을 사용해야합니까?

브라우저 또는 기본 모바일 애플리케이션과 통신하는 소프트웨어를 작성하는 경우 데이터 형식으로 JSON을 사용해야합니다. XML과 같은 형식을 사용하는 것은 시대에 뒤 떨어진 선택이며 그렇지 않으면 유치하고 싶은 프론트 엔드 및 모바일 인재에게 위험 신호입니다.

서버 간 통신의 경우 Apache Avro 또는 Apache Thrift와 같은 직렬화 프레임 워크를 사용하는 것이 더 나을 수 있습니다. JSON은 여기에서 나쁜 선택이 아니며 여전히 정확히 필요한 것일 수 있지만 대답은 웹 및 모바일 커뮤니케이션만큼 명확하지 않습니다.

NoSQL 데이터베이스를 사용하는 경우 데이터베이스가 제공하는 것이 무엇이든 거의 고착되어 있습니다. 유형으로 JSON을 지원하는 관계형 데이터베이스에서는 가능한 한 적은 수를 사용하는 것이 좋습니다. 관계형 데이터베이스는 특정 스키마에 맞는 구조화 된 데이터를 위해 조정되었습니다. 현재 대부분은 JSON 형식의 더 유연한 데이터를 지원하지만 이러한 JSON 개체 내에서 속성을 쿼리 할 때 성능 저하를 예상 할 수 있습니다.

JSON은 웹 서버와 브라우저 및 모바일 애플리케이션간에 데이터를 전송하기위한 사실상 유비쿼터스 형식입니다. 간단한 디자인과 유연성으로 읽고 이해하기 쉬우 며 대부분의 경우 선택한 프로그래밍 언어로 쉽게 조작 할 수 있습니다. 엄격한 스키마가 없기 때문에 형식의 유연성이 가능하지만 이러한 유연성으로 인해 때때로 JSON을 올바르게 읽고 쓰는지 확인하기가 어렵습니다.

JSON 파서

JSON으로 저장된 데이터를 애플리케이션에서 사용할 수있는 형식으로 변환하는 애플리케이션 코드의 일부를 파서 라고합니다 . 예상대로 JavaScript에는 기본 파서 인 JSON.parse () 메서드가 포함되어 있습니다.

Scala 또는 Elm과 같은 강력한 형식의 언어로 JSON을 사용하려면 약간 더 많은 작업을해야 할 수 있지만 JSON이 널리 채택됨에 따라 가장 어려운 부분을 모두 처리 할 수있는 라이브러리와 유틸리티가 있습니다. 

json.org 웹 사이트에는 Python, C # 및 COBOL과 같은 다양한 언어로 JSON을 구문 분석, 생성 및 조작하는 데 사용할 수있는 포괄적 인 코드 라이브러리 목록이 포함되어 있습니다.

JSON 유틸리티

직접 코드를 작성하지 않고 JSON으로 인코딩 된 데이터를 직접 조작하거나 검사하려는 경우 도움이 될 수있는 온라인 유틸리티가 많이 있습니다. 위에 링크 된 코드 라이브러리의 모든 프로그래밍 방식과 동일하지만 JSON 코드를 잘라내어 이러한 브라우저 기반 도구에 붙여 넣어 JSON을 더 잘 이해하거나 빠르고 간단한 분석을 수행 할 수 있습니다.

  • JSON 포맷터 : JSONLint는 임의의 JSON 코드를 포맷하고 유효성을 검사합니다.
  • JSON 뷰어 : Stack.hu에는 JSON 코드의 구조를 이해하는 데 도움이되는 대화 형 트리를 만드는 사이트가 있습니다. 
  • JSON Beautifier : 구문 색상 등을 사용하여 JSON 코드를 "예쁘게 인쇄"하려면 Prettydiff가 도움이 될 수 있습니다. 
  • JSON 변환기 : 데이터를 JSON 형식에서 다른 것으로 빠르게 이동해야합니까? Convertcsv.com에는 JSON을 CSV (Excel에서 열 수 있음) 또는 XML로 변환 할 수있는 도구가 있습니다.

JSON 튜토리얼

대화 형 애플리케이션에서 JSON을 사용하는 방법에 대해 자세히 알아볼 준비가 되셨습니까? Mozilla 개발자 네트워크에는 JSON 및 JavaScript를 시작하는 데 도움이되는 훌륭한 자습서가 있습니다. 다른 언어로 이동할 준비가 되었으면 Java (Baeldung), Python (DataCamp) 또는 C # (소프트웨어 테스팅 도움말)과 함께 JSON을 사용하는 방법에 대한 자습서를 확인하십시오. 행운을 빕니다!

Josh Fruhlinger가이 기사에 기여했습니다.