JSON과 JSONP의 차이점 및 사용법

15140 단어
JSON(Java Script Object Notation)과 JSONP(JSON with Padding)는 한 자모의 차이만 있지만 사실 그들은 전혀 같은 것이 아니다. JSON은 데이터 교환 형식이고 JSONP는 개발자의 총명함과 재능에 의존하여 만들어진 비공식적인 크로스 데이터 상호작용 프로토콜이다.예를 들어 JSON은 지하당들이 정보를 쓰고 교환하는 데 쓰이는'암호'이고, JSONP는 암호로 쓴 정보를 동지들에게 전달할 때 사용하는 접선 방식이다.봤어?하나는 정보를 묘사하는 형식이고, 하나는 정보를 전달하는 쌍방이 약속한 방법이다.
JSON이란?
JSON은 텍스트 기반의 데이터 교환 방식 또는 데이터 설명 형식이라고 부른다.
JSON의 장점:
1. 순수한 텍스트를 바탕으로 크로스플랫폼 전달이 매우 간단하다.
2. 자바스크립트 원본 지원, 백엔드 언어는 거의 모두 지원한다.
3. 경량급 데이터 형식으로 문자를 차지하는 수량이 적고 인터넷 전달에 특히 적합하다.
4. 가독성이 강하고 XML만큼 일목요연하지는 않지만 합리적인 순서대로 축소된 후에도 식별하기 쉽다.
5. 쉽게 작성하고 해석할 수 있다
JSON의 형식 또는 규칙:
JSON은 매우 간단한 방식으로 데이터 구조를 묘사할 수 있고 XML이 할 수 있는 것은 모두 할 수 있기 때문에 크로스 플랫폼에서 양자는 전혀 백중하지 않다.
1. JSON은 두 가지 데이터 형식 설명자만 있고 큰 괄호 {}와 네모난 괄호 []만 있다. 나머지 영문 사칭은 맵 문자, 영문 쉼표, 구분 문자, 영문 더블 따옴표''는 정의 문자이다.
2. 큰 괄호 {}는'서로 다른 유형의 무질서한 키 값 대 집합'(각 키 값 쌍은 OOP의 속성 설명으로 이해할 수 있음)을 설명하고, 네모난 괄호 []는'같은 유형의 질서정연한 데이터 집합'(OOP에 대응할 수 있는 수조)을 기술한다.
3. 상기 두 가지 집합 중 여러 개의 하위 항목이 있으면 영문 쉼표를 통해 구분한다.
4. 키 값 쌍은 영문 콜론: 구분하고 키 이름에 영문 큰따옴표 "를 붙여서 서로 다른 언어의 해석을 편리하게 하는 것을 권장합니다.
5. JSON 내부에서 자주 사용하는 데이터 유형은 문자열, 숫자, 볼, 날짜,null 등 몇 가지가 있다. 문자열은 반드시 큰 따옴표로 만들어야 하고 나머지는 사용하지 않는다. 날짜 유형이 비교적 특수하기 때문에 여기서 설명을 전개하지 않는다. 다만 클라이언트가 날짜 정렬 기능에 따라 필요하지 않으면 날짜와 시간을 문자열로 직접 전달하는 것이 좋다.많은 번거로움을 줄일 수 있다.
JSON 인스턴스:
//       
var person = {
    "Name": "Bob",
    "Age": 32,
    "Company": "IBM",
    "Engineer": true
}
//          
var personAge = person.Age;
//       
var members = [
    {
        "Name": "Bob",
        "Age": 32,
        "Company": "IBM",
        "Engineer": true
    },
    {
        "Name": "John",
        "Age": 20,
        "Company": "Oracle",
        "Engineer": false
    },
    {
        "Name": "Henry",
        "Age": 45,
        "Company": "Microsoft",
        "Engineer": false
    }
]
//     John      
var johnsCompany = members[1].Company;
//        
var conference = {
    "Conference": "Future Marketing",
    "Date": "2012-6-1",
    "Address": "Beijing",
    "Members":
    [
        {
            "Name": "Bob",
            "Age": 32,
            "Company": "IBM",
            "Engineer": true
        },
        {
            "Name": "John",
            "Age": 20,
            "Company": "Oracle",
            "Engineer": false
        },
        {
            "Name": "Henry",
            "Age": 45,
            "Company": "Microsoft",
            "Engineer": false
        }
    ]
}
//      Henry      
var henryIsAnEngineer = conference.Members[2].Engineer;

JSONP 소개
1. 모두가 알고 있는 문제, Ajax가 일반 파일에 크로스 도메인에 접근할 수 있는 권한이 없는 문제를 직접 요청한다. 정적 페이지, 동적 웹 페이지, 웹 서비스, WCF든 크로스 도메인에 대한 요청이라면 일률적으로 허용하지 않는다.
2. 그러나 우리는 웹 페이지에서 js 파일을 호출할 때 크로스 필드의 영향을 받지 않는다는 것을 발견했다. (이뿐만 아니라 우리는'src'라는 속성을 가진 라벨이 모두 크로스 필드의 능력을 가진다는 것을 발견했다. 예를 들어 , ,