[json] JSON이란 무엇이며 왜 사용해야합니까?

나는 wikipedia와 Google을 보았고 공식 문서를 읽었지만 여전히 JSON이 무엇인지, 왜 그것을 사용 해야하는지 이해하지 못했습니다.

PHP, MySQL 및 Javascript / HTML을 사용하여 잠시 동안 응용 프로그램을 구축 해 왔으며 JSON이 내 삶을 더 쉽게 만들거나 코드를 개선하거나 사용자 인터페이스를 개선하기 위해 무언가를 할 수 있다면 그것에 대해 알고 싶습니다. 누군가 간결한 설명을 해줄 수 있습니까?



답변

JSON (JavaScript Object Notation)은 데이터 교환에 사용되는 간단한 형식입니다. JavaScript의 하위 세트 (객체가 JavaScript로 빌드되는 방식)를 기반으로합니다. MDN에 명시된 바와 같이 일부 JavaScript는 JSON이 아니며 일부 JSON은 JavaScript가 아닙니다.

이것이 사용되는 예는 웹 서비스 응답입니다. 예전에는 웹 서비스가 데이터를 다시 전송하기 위해 기본 데이터 형식으로 XML을 사용했지만 JSON이 등장한 이후 ( JSON 형식은 Douglas Crockford의 RFC 4627 에 명시되어 있음) 훨씬 선호하기 때문에 선호되는 형식이었습니다. 경량

공식 JSON 웹 사이트 에서 더 많은 정보를 찾을 수 있습니다 .

JSON은 두 가지 구조로 구축됩니다.

  • 이름 / 값 쌍의 모음입니다. 다양한 언어에서 이것은 객체, 레코드, 구조체, 사전, 해시 테이블, 키 목록 또는 연관 배열로 실현됩니다.
  • 정렬 된 값 목록. 대부분의 언어에서 이는 배열, 벡터, 목록 또는 시퀀스로 실현됩니다.

JSON 구조

JSON 객체 다이어그램

JSON 배열 다이어그램

JSON 값 다이어그램

JSON 문자열 다이어그램

JSON 번호 다이어그램

다음은 JSON 데이터의 예입니다.

{
     "firstName": "John",
     "lastName": "Smith",
     "address": {
         "streetAddress": "21 2nd Street",
         "city": "New York",
         "state": "NY",
         "postalCode": 10021
     },
     "phoneNumbers": [
         "212 555-1234",
         "646 555-4567"
     ]
 }

JavaScript의 JSON

JSON (Javascript)은 문자열입니다!

사람들은 종종 모든 Javascript 객체가 JSON이고 JSON이 Javascript 객체라고 가정합니다. 이것은 올바르지 않습니다.

Javascript var x = {x:y}JSON아닌 경우 이것은 Javascript 객체 입니다. 둘은 같은 것이 아닙니다. JSON에 해당하는 (Javascript 언어로 표시)는입니다 var x = '{"x":"y"}'. x자체가 아닌 문자열 유형의 객체입니다 . 본격적인 Javascript 객체로 변환하려면 먼저 구문 분석해야합니다 var x = JSON.parse('{"x":"y"}');.x 이제 객체 그러나 이것은 더 이상 JSON 없습니다.

자바 스크립트 객체 대 JSON 참조


JSON 및 JavaScript로 작업 할 때이 eval함수 를 사용하여 콜백에서 반환 된 결과를 평가하려는 유혹이있을 수 있지만 JSON에서는 유효하지만 JavaScript에서는 2 개의 문자 (U + 2028 및 U + 2029)가 있으므로 제안되지 않습니다. ( 여기에서 더 읽기 참조 ).

따라서 Crockford의 스크립트를 평가하기 전에 유효한 JSON을 확인하는 스크립트를 항상 사용해야합니다. 스크립트 설명에 대한 링크가 있습니다 여기에 있으며 여기 js 파일에 대한 직접 링크 가 있습니다. 오늘날 모든 주요 브라우저에는 자체 구현이 있습니다 위한 이 있습니다.

JSON 파서를 사용하는 방법에 대한 예 (위 코드 스 니펫의 json 사용) :

//The callback function that will be executed once data is received from the server
var callback = function (result) {
    var johnny = JSON.parse(result);
    //Now, the variable 'johnny' is an object that contains all of the properties 
    //from the above code snippet (the json example)
    alert(johnny.firstName + ' ' + johnny.lastName); //Will alert 'John Smith'
};

JSON 파서는 또 다른 유용한 방법을 제공합니다. stringify . 이 메소드는 JavaScript 오브젝트를 매개 변수로 승인하고 JSON 형식의 문자열을 다시 출력합니다. 이는 서버로 데이터를 다시 보내려 는 경우에 유용 합니다.

var anObject = {name: "Andreas", surname : "Grech", age : 20};
var jsonFormat = JSON.stringify(anObject);
//The above method will output this: {"name":"Andreas","surname":"Grech","age":20}

위의 두 가지 방법 (parsestringify)은 두 번째 매개 변수를 사용합니다.이 매개 변수는 최종 결과의 모든 수준에서 모든 키와 값에 대해 호출되는 함수이며 각 값은 입력 된 함수의 결과로 대체됩니다. (자세한 내용은 여기 )

Btw, JSON이 JavaScript만을위한 것이라고 생각하는 모든 사람들을 위해, 그렇지 않으면 설명하고 확인 하는 이 게시물 을 확인하십시오.


참고 문헌


답변

개념 설명-코드 또는 기술 전문 용어 없음

JSON이란 무엇입니까? – 아내 TM 에게 설명하는 방법

나 : “기본적으로 누군가와 서면으로 의사 소통하는 방법이지만 매우 구체적인 규칙이 있습니다.

부인 : 네 ..?

나 : prosaic English에서, 규칙은 케이지 싸움과 마찬가지로 매우 느슨합니다. JSON에서는 그렇지 않습니다. 무언가를 설명하는 방법에는 여러 가지가 있습니다.

• 예 1 : 우리 가족은 4 명 : 당신과 나 그리고 2 명의 아이들이 있습니다.

• 예 2 : 우리 가족 : 당신, 나, kid1 및 kid2.

• 예 3 : 가족 : [당신, 나, kid1, kid2]

• 예 4 : 우리는 가족에 4 명의 사람들이 있습니다 : mum, dad, kid1 및 kid2.

부인 : 왜 일반 영어를 대신 사용하지 않습니까?

나 : 그들은, 그러나 우리가 컴퓨터를 다루고 있다는 것을 기억하십시오. 컴퓨터는 어리 석고 문장을 이해할 수 없습니다. 그래서 우리는 컴퓨터가 관여 할 때 정말로 구체적이어야합니다. 그렇지 않으면 컴퓨터가 혼란스러워집니다. 또한 JSON은 매우 효율적인 의사 소통 방식이므로 관련이없는 대부분의 내용이 잘립니다. 가족, 컴퓨터와 의사 소통하기를 원하는 경우 다음과 같이 할 수 있습니다.

{
                "Family" :  ["Me", "Wife", "Kid1", "Kid2"]
}

…… 기본적으로 JSON입니다. 그러나 반드시 JSON 문법 규칙을 준수해야합니다. 이러한 규칙을 어기면 컴퓨터는 단순히 작성중인 내용을 이해하지 못합니다 (예 : 파싱).

부인 : 어떻게 Json에 글을 쓰나요?

좋은 방법은 json serialiser를 사용하는 것입니다.이 직렬 라이저는 무거운 작업을 수행하는 라이브러리입니다.

요약

JSON은 기본적으로 매우 구체적인 규칙을 사용하여 데이터를 누군가에게 전달하는 방법입니다. 키 값 쌍 및 배열 사용. 이것이 개념이며,이 시점에서 위의 특정 규칙을 읽을 가치가 있습니다.


답변

간단히 말해 JSON은 이러한 방식으로 직렬화하는 방법으로 JavaScript 코드가됩니다. (eval 또는 다른 방법으로) 실행될 때이 코드는 직렬화 한 데이터가 포함 된 JavaScript 객체를 생성하고 반환합니다. JavaScript는 다음 구문을 허용하기 때문에 사용할 수 있습니다.

var MyArray = [ 1, 2, 3, 4]; // MyArray is now an array with 4 elements
var MyObject = {
    'StringProperty' : 'Value',
    'IntProperty' : 12,
    'ArrayProperty' : [ 1, 2, 3],
    'ObjectProperty' : { 'SubObjectProperty': 'SomeValue' }
}; // MyObject is now an object with property values set.

여러 가지 용도로 사용할 수 있습니다. 하나는 서버 백엔드에서 JavaScript 코드로 데이터를 전달하는 편리한 방법입니다. 따라서 이것은 종종 AJAX에서 사용됩니다.

또한 XML보다 단순하고 공간을 덜 차지하는 독립형 직렬화 메커니즘으로 사용할 수도 있습니다. 다양한 프로그래밍 언어를 위해 JSON에서 객체를 직렬화 및 직렬화 해제 할 수있는 많은 라이브러리가 있습니다.


답변

즉, 데이터를 전달하기위한 스크립팅 표기법입니다. 어떤면에서는 기본 데이터 유형, 배열 및 연관 배열 (기본적으로 Objects라고하는 이름-값 쌍)을 기본적으로 지원하는 XML의 대안입니다.

구문은 JavaScript에서 사용되며 JSON 자체는 “JavaScript Object Notation”을 나타냅니다. 그러나 이식 가능해졌으며 다른 언어에서도 사용됩니다.

자세한 내용은 다음 링크를 참조하십시오 :

http://secretgeek.net/json_3mins.asp


답변

JSON 형식은 종종 네트워크 연결을 통해 구조화 된 데이터를 직렬화하고 전송하는 데 사용됩니다. 주로 XML 대신 서버와 웹 응용 프로그램간에 데이터를 전송하는 데 사용됩니다.


답변

JSON은 JavaScript 객체 표기법입니다. XML에 비해 네트워크 연결을 통해 데이터 세트를 전송하는 훨씬 간단한 방법입니다. XML이 그렇지 않으면 “권장”옵션 인 AJAX와 유사한 애플리케이션에서 JSON을 사용하는 것이 좋습니다. XML의 자세한 내용은 다운로드 시간과 대역폭 소비량 ($$$)을 증가시킵니다. JSON으로 동일한 효과를 얻을 수 있으며 마크 업은 기본 구조가 아닌 데이터 자체에 거의 독점적으로 사용됩니다.


답변

일반적인 대답은 AJAX를 사용하여 데이터 요청을하는 경우 객체를 JSON 문자열로 쉽게 보내고 반환 할 수 있다는 것입니다. AJAX 요청에서 서버로 데이터를 전송하기 위해 모든 자바 스크립트 유형에 대한 JavaScript 지원 toJSON () 호출에 대한 사용 가능한 확장. AJAX 응답은 간단한 eval 호출로 Javascript 객체로 변환 할 수있는 JSON 문자열로 객체를 반환 할 수 있습니다 (예 : AJAX 함수 someAjaxFunctionCallReturningJson이 반환 된 경우)

"{ \"FirstName\" : \"Fred\", \"LastName\" : \"Flintstone\" }"

당신은 자바 스크립트로 작성할 수 있습니다

var obj = eval("(" + someAjaxFunctionCallReturningJson().value + ")");
alert(obj.FirstName);
alert(obj.LastName);

JSON은 웹 서비스 페이로드 등에 사용할 수도 있지만 AJAX 결과에는 매우 편리합니다.

  • 업데이트 (10 년 후) :이 작업을 수행하지 말고 JSON.parse를 사용하십시오.