JSON 소개


소개

JSON(JavaScript Object Notation의 약자)은 데이터 공유를 위한 형식입니다. 이름에서 알 수 있듯이 JSON은 JavaScript 프로그래밍 언어에서 파생되었지만 Python, Ruby, PHP 및 Java를 포함한 많은 언어에서 사용할 수 있습니다. JSON은 일반적으로 \Jason이라는 이름처럼 발음됩니다.

또한 JSON은 읽기 쉽고 가벼우며 XML에 대한 좋은 대안을 제공하고 훨씬 적은 서식이 필요합니다. 이 정보 가이드에서는 JSON 파일에서 사용할 수 있는 데이터와 이 형식의 일반 구조 및 구문에 대해 설명합니다.

구문 및 구조 이해

JSON은 독립형일 때 .json 확장자를 사용하고 다른 파일 형식(.html에서와 같이)으로 정의될 때 인용 부호 안에 JSON 문자열로 나타날 수 있습니다. , 또는 변수에 할당된 개체일 수 있습니다. 이 형식은 웹 서버와 클라이언트 또는 브라우저 간에 전송됩니다.

JSON 개체는 일반적으로 중괄호로 렌더링되는 키-값 데이터 형식입니다. JSON으로 작업할 때 .json 파일에서 JSON 개체를 발견할 가능성이 높지만 프로그램 컨텍스트 내에서 JSON 개체 또는 문자열로 존재할 수도 있습니다.

다음은 JSON 개체의 예입니다.

{
  "first_name" : "Sammy",
  "last_name" : "Shark",
  "location" : "Ocean",
  "online" : true,
  "followers" : 987 
}

이것은 짧은 예이고 JSON은 여러 줄 길이일 수 있지만 형식이 일반적으로 양쪽 끝에 { }로 표시되는 두 개의 중괄호(또는 중괄호)로 설정됨을 보여줍니다. 그리고 그 사이의 공간을 채우는 키-값 쌍으로. JSON에서 사용되는 대부분의 데이터는 결국 JSON 개체에 캡슐화됩니다.

키-값 쌍에는 key : value와 같이 쌍 사이에 콜론이 있습니다. 각 키-값 쌍은 쉼표로 구분되므로 JSON 중간에 다음과 같이 나열됩니다. \key\ : \value\, \key\ : \value\, \key\: \value\. 이전 예에서 첫 번째 키-값 쌍은 first_name : Sammy입니다.

JSON 는 콜론의 왼쪽에 있습니다. \key\에서와 같이 큰따옴표로 묶어야 하며 모든 유효한 문자열이 될 수 있습니다. 각 개체 내에서 키는 고유해야 합니다. 이러한 키 문자열에는 \first name\과 같이 공백이 포함될 수 있지만 프로그래밍할 때 액세스하기 어려울 수 있으므로 \first_name\과 같이 밑줄을 사용하는 것이 가장 좋습니다. .

JSON 은 콜론 오른쪽에 있습니다. 세분화된 수준에서 이들은 다음 6가지 데이터 유형 중 하나여야 합니다.

  • 문자열
  • 숫자
  • 개체
  • 배열
  • 부울(참 또는 거짓)

더 넓은 수준에서 값은 다음 섹션에서 설명하는 JSON 개체 또는 배열의 복잡한 데이터 유형으로 구성될 수도 있습니다.

JSON에 값으로 전달되는 각 데이터 유형은 자체 구문을 유지합니다. 즉, 문자열은 따옴표로 묶지만 숫자는 그렇지 않습니다.

.json 파일을 사용하면 일반적으로 여러 줄로 확장된 형식을 얻을 수 있지만 다음 예와 같이 JSON을 모두 한 줄에 작성할 수도 있습니다.

{ "first_name" : "Sammy", "last_name": "Shark",  "online" : true, }

이것은 다른 파일 형식 내에서 또는 JSON 문자열을 접할 때 더 일반적입니다.

여러 줄에 JSON 형식을 작성하면 특히 대규모 데이터 세트를 처리할 때 훨씬 더 읽기 쉽습니다. JSON은 요소 사이의 공백을 무시하므로 콜론과 키-값 쌍의 간격을 두어 데이터를 사람이 더 쉽게 읽을 수 있도록 할 수 있습니다.

{ 
  "first_name"  :  "Sammy", 
  "last_name"   :  "Shark", 
  "online"      :  true 
}

비슷해 보이지만 JSON 개체는 JavaScript 개체와 같은 형식이 아니므로 JavaScript 개체 내에서 함수를 사용할 수 있지만 JSON.JSON JSON의 가장 중요한 속성은 참여하는 모든 언어가 작업할 수 있는 형식으로 프로그래밍 언어 간에 쉽게 전송할 수 있다는 것입니다. 반대로 JavaScript 개체는 JavaScript 프로그래밍 언어를 통해서만 직접 작업할 수 있습니다.

JSON은 중첩 개체 및 배열로 구성된 계층 구조로 인해 점점 더 복잡해질 수 있습니다. 다음으로 이러한 복잡한 구조에 대해 자세히 알아봅니다.

JSON에서 복합 유형 작업

JSON은 중첩된 배열 외에도 중첩된 개체를 JSON 형식으로 저장할 수 있습니다. 이러한 개체 및 배열은 키에 할당된 값으로 전달되며 키-값 쌍으로 구성될 수도 있습니다.

중첩된 개체

다음 users.json 파일에서 각 4명의 사용자(sammy, jesse, drew , \jamie\) \username\위치는 각 사용자와 관련된 것입니다. 다음 코드 블록의 각 사용자 항목은 중첩된 JSON 개체의 예입니다.

{ 
  "sammy" : {
    "username"  : "SammyShark",
    "location"  : "Indian Ocean",
    "online"    : true,
    "followers" : 987
  },
  "jesse" : {
    "username"  : "JesseOctopus",
    "location"  : "Pacific Ocean",
    "online"    : false,
    "followers" : 432
  },
  "drew" : {
    "username"  : "DrewSquid",
    "location"  : "Atlantic Ocean",
    "online"    : false,
    "followers" : 321
  },
  "jamie" : {
    "username"  : "JamieMantisShrimp",
    "location"  : "Pacific Ocean",
    "online"    : true,
    "followers" : 654
  }
}

이 예에서 중괄호는 4명의 사용자 각각에 대한 연결된 사용자 이름 및 위치 데이터가 있는 중첩된 JSON 개체를 형성하는 데 전체적으로 사용됩니다. 다른 값과 마찬가지로 개체를 사용할 때 쉼표를 사용하여 요소를 구분합니다.

중첩 배열

데이터는 값으로 전달되는 JavaScript 배열을 사용하여 JSON 형식 내에 중첩될 수도 있습니다. JavaScript는 배열 유형의 양쪽 끝에 대괄호 [ ]를 사용합니다. 배열은 정렬된 모음이며 다양한 데이터 유형의 값을 포함할 수 있습니다.

예를 들어 단일 사용자와 연결된 다양한 웹 사이트 및 소셜 미디어 프로필이 있는 경우와 같이 함께 그룹화할 수 있는 많은 데이터를 처리할 때 배열을 사용할 수 있습니다.

첫 번째 중첩 배열을 사용하여 \Sammy\의 사용자 프로필은 다음과 같이 나타낼 수 있습니다.

{ 
  "first_name" : "Sammy",
  "last_name" : "Shark",
  "location" : "Ocean",
  "websites" : [
    {
      "description" : "work",
      "URL" : "https://www.digitalocean.com/"
    },
    {
      "desciption" : "tutorials",
      "URL" : "https://www.digitalocean.com/community/tutorials"
    }
  ],
  "social_media" : [
    {
      "description" : "twitter",
      "link" : "https://twitter.com/digitalocean"
    },
    {
      "description" : "facebook",
      "link" : "https://www.facebook.com/DigitalOceanCloudHosting"
    },
    {
      "description" : "github",
      "link" : "https://github.com/digitalocean"
    }
  ]
}

\websites\ 키와 \social_media\ 키는 각각 배열을 사용하여 Sammy의 웹사이트 링크 2개와 소셜 미디어 프로필 링크 3개에 속하는 정보를 중첩합니다. 대괄호를 사용하기 때문에 배열임을 식별할 수 있습니다.

JSON 형식 내에서 중첩을 사용하면 더 복잡하고 계층적인 데이터로 작업할 수 있습니다.

JSON과 XML 비교

XML 또는 eXtensible Markup Language는 읽을 수 있는 액세스 가능한 데이터를 저장하는 방법입니다. 인간과 기계 모두에 의해. XML 형식은 많은 프로그래밍 언어에서 사용할 수 있습니다.

여러 면에서 XML은 JSON과 유사하지만 훨씬 더 많은 텍스트가 필요하므로 읽고 쓰는 데 더 길고 더 많은 시간이 소요됩니다. XML도 XML 파서로 파싱해야 하지만 JSON은 표준 함수로 파싱할 수 있습니다. 또한 JSON과 달리 XML은 배열을 사용할 수 없습니다.

다음은 XML 형식의 예입니다.

<users>
    <user>
        <username>SammyShark</username> <location>Indian Ocean</location>
    </user>
    <user>
        <username>JesseOctopus</username> <location>Pacific Ocean</location>
    </user>
    <user>
        <username>DrewSquir</username> <location>Atlantic Ocean</location>
    </user>
    <user>
        <username>JamieMantisShrimp</username> <location>Pacific Ocean</location>
    </user>
</users>

이제 JSON으로 렌더링된 동일한 데이터를 비교합니다.

{"users": [
  {"username" : "SammyShark", "location" : "Indian Ocean"},
  {"username" : "JesseOctopus", "location" : "Pacific Ocean"},
  {"username" : "DrewSquid", "location" : "Atlantic Ocean"},
  {"username" : "JamieMantisShrimp", "location" : "Pacific Ocean"}
] }

JSON은 훨씬 더 작으며 XML과 달리 끝 태그가 필요하지 않습니다. 또한 XML은 이 JSON 예제(대괄호를 사용하여 알 수 있음)처럼 배열을 사용하지 않습니다.

HTML에 익숙하다면 XML이 태그 사용과 매우 유사하다는 것을 알게 될 것입니다. JSON은 XML보다 간결하고 장황하지 않으며 AJAX 응용 프로그램을 비롯한 여러 상황에서 빠르게 사용할 수 있지만 사용할 데이터 구조를 결정하기 전에 먼저 작업 중인 프로젝트 유형을 이해해야 합니다.

결론

JSON은 데이터를 공유, 저장 및 작업할 수 있는 경량 형식입니다. 형식으로서 JSON은 \Introduction JSON\ 사이트를 포함하여 API에서 지원이 증가했습니다.

자신의 .json 파일을 만들지 않고 다른 소스에서 조달할 가능성이 높기 때문에 JSON의 구조보다는 프로그램에서 JSON을 가장 잘 사용하는 방법에 대해 더 많이 생각하는 것이 중요합니다. 예를 들어 오픈 소스 도구 utility-online.info 사이트를 사용하여 스프레드시트 프로그램에서 찾을 수 있는 CSV 또는 탭으로 구분된 데이터를 JSON으로 변환할 수 있습니다.

마지막으로 다른 데이터 유형을 JSON으로 변환하거나 고유한 데이터 유형을 생성할 때 JSFiddle을 사용하여 JSON의 유효성을 검사할 수 있습니다.