2013-07-30 3 views
2

보통, 내가 무엇을보고 {"attribute":241241}JSON 속성 모범 사례

그러나 이것은을 writting 정확히 같은 일을 수행합니다 {attribute:241241}.

{attribute:241241}은 나쁜 관행으로 간주 되니 피해야합니까?

+4

두 번째는 실제로 유효한 json이 아닙니다. –

답변

5

{attribute:241241}JSONLint을 사용하여 유효하지 않으므로 사용하지 않는 것이 좋습니다.

json.org에서 JSON 사양을 보면 개체의 경우 첫 번째 값은 항상 문자열 (큰 따옴표로 묶음)임을 알 수 있습니다.

1

사양 here에 따라 이름/값 쌍의 이름은 string이어야합니다.

목적은 이름 문자열 인 0 개 이상의 이름/값 쌍 의 순서화 된 집합이며, 값은 문자열, 숫자, 부울 널, 객체 또는 배열이다.

1

에는 키를 인용해야하므로 두 번째 양식은 유효한 JSON이 아닙니다.

Snakes and Coffee가 언급했듯이 유효한 Javascript 개체 리터럴 (JSON 기반)이며 일부 JSON 파서는이를 수락합니다. 따라서 어떤 경우에는 작동하지만 조만간 스펙별로 유효하지 않은 비 인용 키를 거부하는 완벽하게 기능하는 JSON 파서를 실행하게됩니다.

+0

그것은 유효한 자바 스크립트 객체 리터럴입니다. 나는 'eval()'을 호출하는 것이 JSON 파싱이 아니라 실제로 자바 스크립트 코드로 입력을 실행한다는 점에 유의해야합니다. – Esailija

1

당신은

var o = { 
    "attribute":241241 
}; 

하고 자바 스크립트 개체 리터럴 구문 JSON을 혼동하는 것은 JSON 하지이지만, 개체 리터럴. 그리고 그렇습니다. 따옴표는 쓸모가 없습니다.