어 머, 이게 JSON 이에 요.

6174 단어
이 글 을 쓴 이유
너 JSON 알 아?JSON 자 바스 크 립 트 의 대상 인가요?JSON function 대상 을 저장 할 수 있 습 니까?JSON 의 본질은 무엇 입 니까?JSON 주석 을 쓸 수 있 습 니까?만약 당신 이 모두 대답 할 수 있다 면, 축하합니다. 당신 은 JSON 에 대해 잘 알 고 있 습 니 다. 만약 당신 이 잘 쓰 지 못 한다 면, 나 와 함께 토론 할 필요 가 있 습 니까? JSON저 는 예전 에 JSON 의 개념 에 대해 서도 반 쯤 알 고 있 었 습 니 다. 자 바스 크 립 트 의 Object 대상 과 자주 헷 갈 렸 기 때문에 여러 가지 오 류 를 초래 했 습 니 다. 특히 연구 NodeJS 에서 package. json 이라는 파일 이 제 이 슨 형식의 데 이 터 를 저장 하 는 데 사용 되 었 습 니 다.이 파일 에 주석 을 쓰 거나 함 수 를 저장 하면 이 파일 을 해석 할 때 오류 가 발생 합 니 다.
그리고 자신 이 관련 자 료 를 찾 아 보고 결론 을 내 렸 다.지금 꺼 내 서 여러분 과 공유 하 는 동시에 글 에 오류 가 있 으 면 바로 잡 아 주세요.
JSON 이 뭐야?
우선 공식 적 으로 어떻게 설명 하 는 지 살 펴 보 자 JSON. JSON (JavaScript Object Notation) 은 경량급 데이터 교환 형식 이다.사람 이 읽 고 쓰기 쉽다.기계 적 으로 해석 하고 생 성 하기 도 쉽다.자 바스 크 립 트 Programming Language, Standard ECMA - 262 3rd Edition - December 1999 의 하위 집합 을 기반 으로 합 니 다.JSON 은 언어 에 완전히 독립 된 텍스트 형식 을 사용 하지만 C 언어 가족 과 유사 한 습관 (C, C + +, C \ #, Java, JavaScript, Perl, Python 등 포함) 도 사용 했다.이러한 특성 들 은 JSON 을 이상 적 인 데이터 교환 언어 로 만 들 었 다.참조 원본 주소:http://www.json.org/json-zh.html。
공식 적 으로 도 명확 하지 않 고 경량급 데이터 교환 형식 이 며 자바 스 크 립 트 기반 키 집합 임 을 설명 한다.이것 은 근본적으로 무엇 을 설명 할 수 없 습 니까?그러나 나 는 다른 데이터 교환 형식 을 연상 시 켰 다. 그것 이 바로 xml 이다. 이 형식 은 특히 웹 서비스 에서 대량으로 사용 된다.xml 는 무엇 일 까요? 그 본질은 DOM 구조 입 니 다.비교 해 보면 그 json 의 본질은 문자열 이지 만 이 문자열 은 서로 다른 문자열 이 아니 라 열 에 있 는 문법 과 구조 가 있 습 니 다.다음은 그 문법 을 소개 하 겠 습 니 다.
JSON 의 문법 소개
흔히 볼 수 있 는 JSON 데이터 구 조 는 두 가지 형식 이 있 는데 그것 이 바로 다음 과 같다.
  • '이름 / 값' 쌍 의 집합, 자바 스 크 립 트 의 대상 과 유사 합 니 다.
  • 값 의 서열 표 (An ordered list of values) 가 있 습 니 다.대부분의 언어 에서 배열 (array) 로 이해 된다.

  • 먼저 첫 번 째 상황 을 살 펴 보 자. 대상 은 무질서 한 '이름 / 값' 대 '집합 이다.대상 은 "{" (왼쪽 괄호) 로 시작 하여 "}" (오른쪽 괄호) 로 끝 납 니 다."이름" 뒤에 ":" (사칭);"이름 / 값" 은 "사이 에 사용 합 니 다." (쉼표) 로 구 분 됩 니 다.
    이것 은 자 바스 크 립 트 의 대상 글자 의 양 과 비슷 하지만 본질 적 으로 약간의 차이 가 있다.예 를 들 어 대상 의 이름 (또는 key) 은 두 따옴표 로 묶 어야 합 니 다. 작은 따옴표 도 안 됩 니 다. 무시 하 는 것 은 말 할 것 도 없습니다. 자바 스 크 립 트 의 대상 의 이름 값 은 두 따옴표 를 무시 하 는 경우 가 많 습 니 다. 예 를 들 어
    {
        name : 'test',
        age  : 123,
        success : function(){
            //todo
        }
    }
    

    JSON 에 서 는 통 하지 않 습 니 다. "이름 (key)" 값 이 제한 되 어 있 는 것 을 제외 하고 대상 의 "값 (value)" 도 제한 되 어 있 습 니 다. 예 를 들 어 JavaScript 에 있 는 대상 의 글자 크기 에 있 는 값 은 문자열, 배열, 함수, 성형 에 관 계 없 이 마음대로 할당 할 수 있 습 니 다. JSON 의 값 은 두 따옴표 로 묶 은 문자열 (string), 수치 (number) 일 수 있 습 니 다., true, false, null, 대상 (object) 또는 배열 (array),
    그 밖 에 이 값 외 에 도 문제 가 해 석 됩 니 다. 방금 전에 언급 한 것 처럼 JSON 의 값 에 값 을 부여 하면 function 잘못된 행동 입 니 다.
    다음은 값 의 서열 표 (또는 배열 이 라 고 함) 를 보 세 요. 배열 은 값 의 서열 표 입 니 다. 한 배열 은 '[' (왼쪽 괄호) 로 시작 하고 ']' (오른쪽 괄호) 로 끝 납 니 다. 값 사이 에 ',' (쉼표) 로 구분 되 며 값 의 제한 상황 은 위 에서 언급 되 었 습 니 다.
    문법 을 다 소개 할 뻔 했 습 니 다. 정리 해 보 세 요. JSON 그 본질은 의미 있 는 문자열 데이터 교환 형식 입 니 다. 하하, 제 정의 가 정확 한 지 모 르 겠 습 니 다.
    JavaScript 언어 에서 JSON 의 해석 과 직렬 화
    JavaScript 에 서 는 항상 JSON 을 처리 해 야 합 니 다. 예 를 들 어 데 이 터 를 제출 하기 전에 직렬 화 처 리 를 해 야 합 니 다. 나중에 끌 어 온 JSON 데 이 터 를 분석 한 다음 에 JavaScript 대상 을 얻 는 경우 가 많 습 니 다. JavaScript 라 이브 러 리 를 자주 사용 하기 때문에 이 라 이브 러 리 들 은 JSON 의 작업 을 봉인 하여 현상 을 일 으 킬 수 있 습 니 다.그것 은 바로 우리 가 사용 할 줄 만 알 고 본질 을 맞 추 는 것 이다. 우 리 는 아 는 것 이 매우 적다. 지금 우 리 는 유 고 를 버 리 고 그 밑바닥 의 본질 을 이해한다.
    초기 JSON 해상도 기 는 JavaScript 에서 eval () 을 통 해함수 로 해 석 됩 니 다. ECMA 5 가 정렬 될 때 까지 규범 화 된 JSON 대상 을 정의 하여 JSON 을 분석 하고 직렬 화 합 니 다. JSON 이라는 전역 대상 을 지원 하 는 브 라 우 저 는 IE8 +, FF 3.5 +, Safari 4 +, Chrome 과 Opera 10.5 + 를 포함 합 니 다. 이 이미지 가 지원 되 지 않 는 브 라 우 저, 예 를 들 어 IE6, IE7 은 어떻게 처리 합 니까?
    걱정 하지 마 세 요. JSON 의 발명 자 는 우리 에 게 호 환 코드 를 실현 해 주 었 습 니 다. 그 주 소 는 다음 과 같 습 니 다.https://github.com/douglascrockford/JSON-js... 원생 을 지원 하지 않 는 JSON 대상 에 대해 서 는 이 코드 를 도입 하여 호환성 문 제 를 해결 할 수 있 습 니 다.
    JSON 은 JSON 의 서열 화 와 해석 을 해결 하 는 두 가지 주요 방법 이 있 는데 그것 은 각각 stringfyparse 이다. 그들의 용법 을 살 펴 보 자.
    ECMA 5 가 정의 하 는 표준 인 터 페 이 스 는 다음 과 같다.
    /**
    @param {*} value
    @param {Function} [replacer]
    @param {Number|String} [space]
    @static
    */
    JSON.stringify = function(value,replacer,space) {};
    

    그 중에서 하나의 매개 변 수 는 반드시 떨 어 뜨 려 야 하고 우리 가 직렬 화 를 해 야 하 는 대상 입 니 다. 예제 코드 는 다음 과 같 습 니 다.
    var obj = {
        name : 'hello',
        age  : 18
    }
    
    var jsonText = JSON.stringify(obj)    //  :{"name":"hello","age":18}
    

    두 번 째 매개 변 수 는 옵션 입 니 다. 함수 나 배열 일 수 있 습 니 다. 배열 이 라면 배열 에서 필터 항목 을 지정 합 니 다. 위의 예 를 들 어 다음 과 같이 호출 합 니 다.
    var jsonText = JSON.stringify(obj,["name"])     //  : {"name":"hello"}
    

    함수 라면 리 셋 함수 의 매개 변 수 는 자바 script 의 대상 keyvalue 값 에 대응 합 니 다. 예 는 다음 과 같 습 니 다.
    var jsonText = JSON.stringify(obj,function(key,value){
        switch(key) {
            case "name": return value+" json";
            case "age" : return 20;
            default : return value;
        }
    });
    //   {"name":"hello json","age":20}
    

    세 번 째 인자 도 선택 할 수 있 습 니 다. 문자열 들 여 쓰기 에 사용 되 며, 예 는 다음 과 같 습 니 다.
    var jsonText = JSON.stringify(obj,null,4); // 4     
    
    //          ,       :
    {
        "name" : "hello",
        "age" :  18
    }
    

    숫자 를 설정 할 수 있 는 것 외 에 문자 로 들 여 쓰기 도 할 수 있 으 니 관심 이 있 으 면 시도 해 보 세 요.
    ECMA 5 의 parse 인터페이스 에 대한 정 의 는 다음 과 같다.
    /**
    @param {string} jsonString
    @param {Function} [reviver]
    @static
    */
    JSON.parse = function(jsonString,reviver) {};
    

    이 방법 은 두 개의 인 자 를 받 아들 이 는데, 그 중 두 번 째 인 자 는 선택 할 수 있다.
    첫 번 째 매개 변 수 는 변 환 된 JSON 문자열 입 니 다. 예 를 들 어 위의 jsonText 를 parse 를 통 해 원래 의 Javascript 대상 으로 복원 할 수 있 습 니 다.
    var obj = JSON. parse (jsonText); / obj 는 JavaScript 대상 입 니 다.
    두 번 째 매개 변 수 는 하나의 함수 로 변환 과정 을 더욱 미세 하 게 제어 할 수 있 습 니 다. 두 개의 매개 변 수 를 받 아들 여 각각 JSON 데이터 의 키 쌍 에 대응 합 니 다. 호출 예 는 다음 과 같 습 니 다.
       var obj = JSON.parse(jsonText,function(key,value){
            //todo
        }); 
    

    도움말 링크
    JSON 중국어 홈 페이지

    좋은 웹페이지 즐겨찾기