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 데이터의 예입니다.
{
"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
자체가 아닌 문자열 유형의 객체입니다 . 당신이 먼저 구문 분석해야 완전히 본격적인 자바 스크립트 객체로이를 켜려면 var x = JSON.parse('{"x":"y"}');
, x
이제 객체 그러나 이것은 더 이상 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}
위의 두 가지 방법 ( parse
및 stringify
)은 두 번째 매개 변수를 사용합니다.이 매개 변수는 최종 결과의 모든 수준에서 모든 키와 값에 대해 호출되는 함수이며 각 값은 입력 된 함수의 결과로 바뀝니다. (자세한 내용은 여기 )
Btw, JSON이 JavaScript만을위한 것이라고 생각하는 모든 사람들을 위해, 그렇지 않으면 설명하고 확인 하는 이 게시물 을 확인하십시오.
참고 문헌
- JSON.org
- 위키 백과
- 3 분 안에 JSON (감사합니다 mson )
- Yahoo!와 함께 JSON 사용 웹 서비스 (감사합니다 gljivar )
- JSON에서 CSV로 변환
- 대체 JSON-CSV 변환기
- JSON Lint (JSON 유효성 검사기)
개념 설명-코드 또는 기술 전문 용어 없음
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를 사용하십시오.
JSON이 너무 간결하기 때문에 주로 JSON을 좋아 합니다. gzip으로 압축 할 수있는 웹 컨텐츠의 경우 이것이 큰 문제 일 필요는 없습니다 (따라서 x html이 그렇게 인기있는 이유 ). 그러나 이것이 도움이 될 수있는 경우가 있습니다.
예를 들어, 한 프로젝트에서 XMPP 를 통해 직렬화 및 전송 해야하는 정보를 전송했습니다 . 대부분의 서버는 단일 메시지로 전송할 수있는 데이터의 양을 제한하기 때문에 명백한 대안 인 XML보다 JSON을 사용하는 것이 도움이됩니다.
추가 보너스로, 파이썬이나 자바 스크립트에 익숙하다면 이미 JSON에 대해 잘 알고 있으며 많은 교육을받지 않고도 해석 할 수 있습니다.
JSON이란 무엇입니까?
JSON (JavaScript Object Notation)은 JavaScript의 객체 리터럴에서 영감을 얻은 간단한 데이터 교환 형식입니다.
JSON 값은 다음으로 구성 될 수 있습니다.
객체 (이름-값 쌍의 모음) 배열 (정렬 된 값 목록) 문자열 (큰 따옴표로 묶음) 숫자 true, false 또는 null
JSON은 언어와 무관합니다.
PHP와 JSON?
PHP 버전 5.2.0 이후 JSON 확장은 기본적으로 기능을 디코딩하고 인코딩합니다.
Json_encode-값의 JSON 표현을 리턴합니다. Json_decode-JSON 문자열을 디코딩합니다. Json_last_error-마지막으로 발생한 오류를 리턴합니다.
JSON 구문 및 규칙?
JSON 구문은 JavaScript 객체 표기법 구문에서 파생됩니다.
데이터는 이름 / 값 쌍에 있습니다. 데이터는 쉼표로 구분됩니다.
우리는 대학에서 프로젝트를 수행해야하며 매우 큰 문제에 직면했습니다.이를 동일한 출처 정책이라고합니다. 다른 점은 Javascript의 XMLHttpRequest 메소드가 사이트가있는 도메인 이외의 도메인에 요청을 할 수 없도록합니다.
예를 들어 사이트가 www.example.com 인 경우 www.otherexample.com에 요청할 수 없습니다. JSONRequest는 허용하지만 해당 사이트에서 허용하면 (예 : JSON으로 메시지를 반환하는 웹 서비스가있는 경우) JSON 형식으로 결과를 얻을 수 있습니다. 그것은 아마도 JSON을 사용할 수있는 한 가지 문제입니다.
실용적인 것이 여기 있습니다 : Yahoo JSON
JSON과 기존 구문의 차이점은 다음과 같습니다 (Javascript).
전통적인
function Employee(name, Id, Phone, email){
this.name = name;
this.Id = Id;
this.Phone = Phone;
this.email = email;
}
//access or call it as
var Emp = new Employee("mike","123","9373849784","mike.Anderson@office.com");
JSON으로
JSON을 사용하면 다음과 같이 다른 방식으로 정의 할 수 있습니다.
function Employee(args){
this.name = args.name;
this.Id = args.Id;
this.Phone = args.Phone;
this.email = args.email;
}
//now access this as...
var Emp = new Employee({'name':'Mike', 'Id':'123', 'Phone':'23792747', 'email':'mike.adnersone@office.com'});
우리가 기억해야 할 중요한 점은 "Employee"클래스 또는 JSON 메소드없이 100 개의 요소로 모달을 빌드해야하는 경우 클래스를 만들 때 모든 것을 구문 분석해야한다는 것입니다. 그러나 JSON을 사용하면 클래스의 새 객체가 정의 된 경우에만 객체를 인라인으로 정의 할 수 있습니다.
아래의이 줄은 JSON으로 작업을 수행하는 방법입니다 (작업을 정의하는 간단한 방법).
var Emp = new Employee({'name':'Mike', 'Id':'123', 'Phone':'23792747', 'email':'mike.adnersone@office.com'});
매우 간단합니다. JSON은 Java Script Object Notation의 약어입니다. 소프트웨어 구성 요소간에 데이터를 전송하기 위해 XML을 사용하는 대안으로 생각하십시오.
예를 들어, 최근에는 JSON을 반환하는 많은 웹 서비스를 작성했으며 일부 Javascript 개발자는 서비스를 호출하고 해당 형식으로 반환 된 정보를 사용하는 코드를 작성했습니다.
JSON (Javascript object notation)은 데이터 교환 / 전송을위한 경량 데이터 형식입니다. JavaScript와 마찬가지로 키 값 쌍입니다. REST API의 경우 서버에서 클라이언트로의 데이터 전송에 널리 사용됩니다. 오늘날 많은 소셜 미디어 사이트에서이 기능을 사용하고 있습니다. 데이터 유형과 관련하여 XML만큼 강력하지는 않습니다. XML에는 매우 풍부한 데이터 유형과 XSD가 있습니다. JSON에는 약간 부족합니다.
동일한 양의 문자열 데이터의 경우 XML에는 모든 열기 및 닫기 태그 등이 있기 때문에 JSON은 XML에 비해 더 가볍습니다.
때로는 기술이 필요하지 않은 곳에서 기술이 제공되며, 가장 많이 투표 된 답변은 기술적으로 구체적이고 구체적이지만, 나는 Wikipedia에서 찾을 수있는 것보다 더 이해하기 쉽고 간결하다고 생각하지 않습니다. 공식 문서.
JSON을 생각하는 방식은 다른 언어의 세계에있는 언어입니다. 그러나 JSON과 다른 언어의 차이점은 "모국어"와 함께 "모든 사람"이 JSON을 "말하는"것입니다.
실제 사례를 사용하여 세 사람이 있다고 가정 해 봅시다. 한 사람은 이그 보어를 모국어로 사용합니다. 두 번째 사람은 첫 번째 사람과 대화하고 싶지만 첫 번째 사람은 요 루바 어를 모국어로 사용합니다.
우리는 무엇을 할 수 있습니까?
다행히, 우리의 예에서 세 번째 사람은 영어를 성장뿐만 아니라 말을 어떻게 두 번째 언어로 이그보어 및 요루바어을, 그래서 처음 두 사람 사이의 중개자 역할을 할 수 있습니다.
프로그래밍 세계에서 첫 번째 "사람"은 파이썬이고, 두 번째 "사람"은 루비이고, 세 번째 "사람"은 JSON이며, 루비를 파이썬으로 "번역"할 수 있으며 그 반대도 마찬가지입니다! 분명히이 비유는 완벽한 것은 아니지만 이중 언어를 사용하는 사람으로서 JSON이 다른 프로그래밍 언어와 상호 작용하는 방법을 쉽게 볼 수 있다고 생각합니다.
Java 컨텍스트에서 JSON이 사용되기를 원하는 한 가지 이유는 Java의 직렬화 프레임 워크를 대체 할 수있는 훌륭한 대안을 제공하기 때문입니다.
Joshua Bloch는 항목 85 "Java 직렬화에 대한 대안 선호"(Effective Java 3rd Edition)에서 이에 대해 자세히 설명합니다.
Java의 직렬화는 처음에 데이터 구조를 쉽게 전송하거나 저장할 수있는 형식으로 변환하는 것이 었습니다. JSON은 위에서 언급 한 심각한 악용없이이 요구 사항을 충족합니다.
다음 코드를 사용하여 PHP json 응답을 구문 분석하십시오. read.php
<script
src="https://code.jquery.com/jquery-3.2.1.min.js"
integrity="sha256-hwg4gsxgFZhOsEEamdOYGBf13FyQuiTwlAQgxVSNgt4="
crossorigin="anonymous"></script>
<script type="text/javascript">
$.ajax({
url:'index.php',
data:{},
type:"POST",
success:function(result) {
jsondecoded = $.parseJSON(result);
$.each(jsondecoded, function(index, value) {
$("#servers").text($("#servers").text() + " " + value.servername);
console.log(value.start);
console.log(value.end);
console.log(value.id);
});
},
statusCode: {
404: function() {
alert( "page not found" );
}
}
});
</script>
server.php
<?php
echo '[{"start":"2017-08-29","end":"2017-09-01","id":"22"},{"start":"2017-09-03","end":"2017-09-06","id":"23"}]';
?>
참고 URL : https://stackoverflow.com/questions/383692/what-is-json-and-why-would-i-use-it
'Programing' 카테고리의 다른 글
Swift에서 Int를 문자열로 변환 (0) | 2020.02.11 |
---|---|
여러 JFrame 사용 : 우수 또는 우수 사례? (0) | 2020.02.11 |
Java에 .NET의 NotImplementedException과 같은 것이 있습니까? (0) | 2020.02.11 |
JavaScript isset () 해당 (0) | 2020.02.11 |
jQuery-텍스트 설명을 통해 선택 컨트롤의 선택된 값 설정 (0) | 2020.02.11 |