2012-02-17 8 views
1

내가 한 페이지에배열 내가 다른 <code>""[]""</code>에 <code>"[]"</code> 얻을 배열

var n = []; 
jQuery.toJSON(n); 

를 실행하고이 아니다. 두 페이지 모두에서 동일한 jQuery 버전을 toJson Plugin과 함께 실행합니다.

파이어 폭스 DOM에서 나는 ... 서로 다른 두 배열이 동일한 함수 이름을 볼 수 있지만 :

all  b(B, A) 
any  j(B, A) 

all  all(iterator, context) 
any  any(iterator, context) 

좀 Array.prototype으로 함수 내 스크립트 전에이있다 같아요. 그 결과 배열이 달라집니다. 어떻게 든이 코드를 처리해야하는 다른 코드는 변경할 수 없습니다.

new Array()jQuery.makeArray(n)을 시도했지만 여전히 결과가 동일합니다. 배열이 동일하지는 않지만 실제로이 JSON 코드를 어떻게 얻습니까? 여분의 따옴표뿐만 아니라 프로토 타입 라이브러리와 가능성이 다른 라이브러리에 의해 정의 된

Array.prototype.toJSON 

기능에 의해 발생하는 ""[\"a\", \"b\"]""

+0

JSON으로 두 번 돌릴 가능성이 있습니까? – Gumbo

+0

당신은 console.dir (n)을 시도해보고 차이점이 있는지 알아 볼 수 있습니까? – ustun

+0

@Gumbo'jQuery.toJSON ([])'을 실행하면 어떻게되는지 모르겠습니다. – PiTheNumber

답변

1

: 나는 배열의 문자열이있는 경우는 점점 더 악화. 이 함수는 jQuery.toJSON (또는 해당 문제에 대해 JSON.Stringify())에 의해 호출되며 추가 따옴표가 생성됩니다. 을 사용하기 전에

delete Array.prototype.toJSON // remove toJSON for all Arrays 
//or 
delete n.toJSON // remove toJSON for specific Array 

을 사용하면 효과가 있습니다. 또 다른 제안으로



,

JSON.stringify(object) 

대신 jQuery.toJSON으로 사용하는 것이 좋습니다. 대부분의 브라우저에서 기본적으로 지원됩니다. 어디서나 작동하는지 확인하려면 https://github.com/douglascrockford/JSON-js을 사용하십시오. JSON.stringify() 기능에 사용되는 기준입니다.

JSON.stringify()의 경우 자세한 내용은 https://developer.mozilla.org/En/Using_native_JSON을 참조하십시오.

function cleanJson(s) 
{ 
    if (s[0] == '"') 
    { 
     s = s.substring(1, s.length-1).replace(/\\"/g,'"'); 
    } 
    return s; 
} 

일을합니까,하지만, 난 여전히 깨끗한 솔루션을 찾고 있어요 : 이것에 대한

+0

동일한 문제가 발생했습니다. 아이디어를 가져 주셔서 감사합니다! – PiTheNumber

+0

어떤 브라우저 + 상황에서 여분의 따옴표가 있습니까? –

+0

Firefox와 Chrome – PiTheNumber

관련 문제