json.js와 json2.js의 차이점


87

누군가 2 JSON 파서의 차이점을 말해 줄 수 있습니까?

https://github.com/douglascrockford/JSON-js/blob/master/json.js
https://github.com/douglascrockford/JSON-js/blob/master/json2.js

2007-04-13의 JSON 파일이 있습니다 (와 같은 메서드가 있습니다 parseJSON). 새 버전에서는 이러한 방법이 표시되지 않습니다.


2
여기에서 새 파일을 찾을 수 있습니다. github.com/douglascrockford/JSON-js
Daniel Little

1
이 파일이 무엇인지 궁금해하는이 질문에 온 사람은 최신 브라우저에서 사용할 이유가 없다는 것을 알고 있습니다. 로부터 GitHub의의의 repo :. "현재 브라우저에서 [json2.js]이 선호 아무것도하지 않는 내장 된 JSON 객체 운명을 강요하지 않는 뭔가 IE8을 지원하기 위해이 파일을 사용하는 이유가없는 것을 아무도해야 다시해야합니다. "
Thunderforge

답변:


59

그들의 코드에서 :

// Augment the basic prototypes if they have not already been augmented.
// These forms are obsolete. It is recommended that JSON.stringify and
// JSON.parse be used instead.

if (!Object.prototype.toJSONString) {
    Object.prototype.toJSONString = function (filter) {
        return JSON.stringify(this, filter);
    };
    Object.prototype.parseJSON = function (filter) {
        return JSON.parse(this, filter);
    };
}

parseJSON은 더 이상 사용되지 않으므로 새 버전 (json2)은 더 이상 사용하지 않습니다. 그러나 코드가 parseJSON많이 사용 되는 경우이 코드를 어딘가에 추가하여 다시 작동 할 수 있습니다.

    Object.prototype.parseJSON = function (filter) {
        return JSON.parse(this, filter);
    };

1
감사합니다. parseJSON이 JSON.parse로 대체 된 것 같습니다. 또한 toJSONString은 어떻습니까? 우리의 기존 코드는이 방법을 많이 사용합니다 boolean.toJSONString () date.toJSONString () number.toJSONString () object.toJSONString () string.toJSONString를 ()

1
그런 다음 첫 번째 코드도 추가합니다. 지정한 모든 값은 객체이므로 모두 JSON.stringify를 사용하도록 자동으로 변환됩니다.
Luca Matteis

감사! 나는 이것을 시도 할 것이다. 그렇다면 이러한 함수를 json.js 파일에 추가 할 수 있습니까?

"구식"-절대적입니까, 구식입니까?
Eric

84
"구식"-확실히 구식 일 때.
davidtbernal 2011 년

31

여기에서 인용 :

"JSON2.js-작년 말 Crockford는 기존 API를 대체하는 새 버전의 JSON API를 조용히 출시했습니다. 중요한 차이점은 단일 기본 개체를 사용한다는 점입니다."


25

또한 json2가 json2007과 다르게 배열을 문자열 화 한 것을 발견했습니다.

json2007에서 :

var array = [];
array[1] = "apple";
array[2] = "orange";
alert(array.toJSONString()); // Output: ["apple", "orange"].

json2에서 :

var array = [];
array[1] = "apple";
array[2] = "orange";
alert(JSON.stringify(array)); // Output: [null, "apple", "orange"].

4
이 경우 json2가 정확합니다. json2007는 인덱스 0에서 첫 번째 요소 무시하고 잘못
롭 키니 엄
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.