2011-12-04 1 views
0
{ 
    name: "Tesla", 
    gender: "Male", 
    info: {age: 88, interest: "Science"}, 
    x: 
    [ 
     {y: 1},{y: 2} 

    ] 

} 

내가JSON : JS (나는 인용 마커를 삭제할 수 있습니까?) 외부 JSON 파일을 구문 분석

var jsonData = eval("("+xmlhttp.responseText+")"); 

를 사용하여이 속성 주위 " "없이 JSON 파일을 구문 분석 할 수 있습니다.

그러나 JSON.parse(xmlhttp.responseText)

{ 
    "name": "Tesla", 
    "gender": "Male", 
    "info": {"age": 88, "interest": "Science"}, 
    "x": 
    [ 
     {"y": 1},{"y": 2} 

    ] 

} 

JSON 속성에 대한

" "로 묶어야합니다. " "없이 이렇게 할 수 있습니까?

+2

것 같아요 :이 코드를 생각해? – Fatih

+0

또한 그렇게 할 방법이 없습니다. 규칙을 가지고 게임을해야합니다. – Fatih

답변

4

아니요, 주위에는 방법이 없습니다.

속성 주위에 따옴표가 없으면 유효한 JSON이 아닙니다. 첫 번째 예제는 JavaScript 객체 리터럴입니다.

2

속성을 따옴표로 묶지 않으므로 JSON이 더 이상 유효하지 않습니다. 이렇게하면 문제가 발생할 것입니다.

2

JSON은 JavaScript의 하위 집합으로 표시되는 데이터 형식입니다.

JSON 사양에서는 속성 이름을 문자열 (인용해야 함)로 표시해야합니다. JavaScript 객체 리터럴 구문은 식별자를 사용하는 옵션도 제공합니다.

eval은 JavaScript에서 허용되는 구문이므로 식별자로 속성 이름을 처리 할 수 ​​있으며 eval은 코드를 JavaScript로 평가합니다. 반대로 JSON.parse은 실제 JSON을 기대하며 사용자가 제공해야합니다.

따옴표는에 보관, 필요합니다.

1

eval 악이다. 읽기 위해 this을 확인하십시오. 그러나 JSON.parse에 브라우저의 최신 버전이 필요하거나 json2.js 스크립트가 필요합니다.

하지만 내 선호도에서는 jQuery가 new Function()을 사용하여 객체에 JSON을 역 직렬화하는 방법을 사용하고 싶습니다. 왜하고 싶지 않은 질문은,

var jsonData = new Function('return ' + xmlhttp.responseText)(); 

이 함께하고 일 것이다 ","없이 :)