[json] JSON 키는 따옴표로 묶어야합니까?

예 : 다음 코드는 JSON 사양에 유효 합니까?

{
    precision: "zip"
}

아니면 항상 다음 구문을 사용해야합니까? (그렇다면 왜?)

{
    "precision": "zip"
}

JSON 사양에서 이것에 대해 실제로 찾지 못했습니다. 예제에서 키 주위에 따옴표를 사용하지만.



답변

예, 따옴표가 필요합니다. 이것은 더 간단하게하고 자바 스크립트 예약 키워드에 대해 다른 이스케이프 메소드가 필요하지 않도록하는 것 {for:"foo"}입니다.


답변

문자열을 키로 사용하는 것이 맞습니다. 다음은 RFC 4627 에서 발췌 한 것 입니다. JavaScript 객체 표기법 (JSON)을위한 응용 프로그램 / json 미디어 유형

2.2. 사물

객체 구조는 0 개 이상의 이름 / 값 쌍 (또는 멤버)을 둘러싸는 중괄호 쌍으로 표시됩니다. 이름은 문자열 입니다. 각 이름 뒤에 단일 콜론이 나타나 이름과 값을 구분합니다. 단일 쉼표는 다음 이름과 값을 구분합니다. 객체 내 이름은 고유해야합니다.

object = begin-object [ member *( value-separator member ) ]
end-object

member = string name-separator value

[…]

2.5. 현

문자열 표현은 C 프로그래밍 언어 제품군에서 사용되는 규칙과 유사합니다. 문자열은 따옴표로 시작하고 끝납니다. […]

string = quotation-mark *char quotation-mark

quotation-mark = %x22 ; "

여기 에서 전체 RFC를 읽으 십시오 .


답변

에서 2.2. 사물

객체 구조는 0 개 이상의 이름 / 값 쌍 (또는 멤버)을 둘러싸는 중괄호 쌍으로 표시됩니다. 이름은 문자열입니다.

그리고 2.5에서. 현

문자열은 따옴표로 시작하고 끝납니다.

따라서 표준에 따르면 : 예, 항상 키를 인용해야합니다 (일부 파서가 더 용서 할 수는 있지만)


답변

따옴표는 필수입니다. http://json.org/ 는 말합니다 :

string
    ""
    " chars "


답변

그렇습니다. 그러나 다른 방법이 필요한 경우 JSON5를 확인 하십시오 .

JSON5 는 다음을 포함하여 ES5 구문을 허용하는 JSON의 상위 집합입니다.

  • 따옴표없는 속성 키
  • 작은 따옴표, 이스케이프 및 여러 줄 문자열
  • 대체 숫자 형식
  • 코멘트
  • 여분의 공백

JSON5 참조 구현 ( json5npm package )은 내장 오브젝트 와 동일한 인수 및 의미 JSON5를 갖는 메소드 parsestringify메소드를 제공 JSON합니다.


답변

“parent.child”점선 표기법을 사용할 수 있고 또한 유효하고 유용한 parent [ “child”]를 넣을 필요가 없기 때문에 두 가지 방법 모두 기술적으로 허용됩니다. 파서는 모두 두 가지 방법 모두 잘 수행해야합니다. 파서가 키에 따옴표가 필요하지 않으면 따옴표를 넣지 않는 것이 좋습니다 (공간 절약). 문자열을 문자열이라고 부르는 것이 합리적이며 대괄호는 키 값을 사용할 수 있기 때문에 본질적으로 완벽하지 않습니다. Json에서 당신은 넣을 수 있습니다 …

>var keyName = "someKey";
>var obj = {[keyName]:"someValue"};

>obj
Object {someKey: "someValue"}

아무 문제없이, 키 값이 필요하고 따옴표가 없으면 작동하지 않으므로 그렇게 할 수 없으므로 “키에 따옴표가 필요하지 않습니다”. 그것이 기술적으로 문자열이라고 말하는 것이 옳더라도. 논리와 사용법은 그렇지 않다고 주장한다. 이 예제에서는 모든 브라우저의 콘솔에서 실행되는 obj의 Object { “someKey”: “someValue”}를 공식적으로 출력하지도 않습니다.


답변