programing

JSON 키는 따옴표로 둘러싸야 합니까?

css3 2023. 3. 11. 09:18

JSON 키는 따옴표로 둘러싸야 합니까?

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

{
    precision: "zip"
}

아니면 항상 다음 구문을 사용해야 합니까? (그렇다면 이유는 무엇입니까?)

{
    "precision": "zip"
}

JSON 사양에서는 이 건에 대해 실제로 알 수 없었습니다.그러나 예제에서는 키 주위에 따옴표를 사용합니다.

네, 따옴표가 필요합니다.이는 javascript reserved 키워드에 대해 다른 이스케이프 방법을 사용할 필요가 없도록 하기 위함입니다.{for:"foo"}.

스트링을 키로 사용하는 것은 옳습니다.RFC 4627 - JavaScript Object Notation (JSON; JavaScript 객체 표기법)의 응용 프로그램/json 미디어 유형에서 발췌한 내용을 다음에 나타냅니다.

2.2. 오브젝트

오브젝트 구조는 0개 이상의 이름/값 쌍(또는 멤버)을 둘러싼 한 쌍의 곱슬 괄호로 표시됩니다.이름은 문자열입니다.각 이름 뒤에는 이름과 값을 구분하는 콜론이1개씩 붙습니다.콤마 하나로 다음 이름과 값을 구분합니다.개체 내의 이름은 고유해야 합니다.

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를 사용하는 경우 없음

일반 JSON의 경우 yes 키는 따옴표로 묶어야 합니다.그러나 필요한 경우 체크 아웃에서는 JSON5가 널리 사용되고 있습니다.JSON의 슈퍼셋으로 다음과 같은 구문을 사용할 수 있기 때문에 이 이름이 붙여졌습니다.

  • 따옴표로 둘러싸지 않은 속성 키
  • 단일 문자열, 이스케이프 문자열 및 다중 행 문자열
  • 대체 번호 형식
  • 평.
  • 여백

JSON5 레퍼런스 구현(json5npm 패키지)은JSON5가지고 있는 물체parse그리고.stringify기본 제공과 동일한 arg 및 의미론을 가진 메서드JSON물건.

널리 사용되고 있으며, 많은 유명 프로젝트에 의존하고 있습니다.

JSON5는 2012년에 시작되어 2022년 현재 주당 6500만 다운로드를 넘어 npm에 가장 의존도가 높은 패키지의 상위 0.1%에 랭크되었으며, Chromium, Next.js, Babel, Retool, WebStorm 등 주요 프로젝트에 채택되었습니다.또한 MacOS 및 iOS와 같은 Apple 플랫폼에서도 기본적으로 지원됩니다.

~ json5.org 홈페이지

당신의 상황에서는 둘 다 유효합니다.그것은 둘 다 효과가 있다는 뜻입니다.

다만, 키명에 따옴표가 붙은 것을 사용하는 것이 일반적이기 때문에, 보다 심플하고 공백이 있는 키명을 사용할 수 있습니다.

그래서 따옴표가 있는 것을 사용하세요.

edit// 체크해 주세요.JSON과 객체 리터럴 표기법의 차이점은 무엇입니까?

parent.child 도트 표기법을 사용할 수 있고 parent [ child ]도 사용할 필요가 없기 때문에 양쪽 모두 기술적으로 허용됩니다.파서들은 둘 다 잘 할 거예요.파서가 키에 따옴표가 필요 없는 경우 따옴표를 넣지 않는 것이 좋습니다(공간 절약).스트링이라고 하는 것은 스트링이라고 하는 것이 적절합니다.또, 대괄호는 기본적으로 키의 값을 사용할 수 있는 기능을 제공하므로, 스트링이라고 부르지 않는 것이 매우 적합합니다.Json에서는...

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

>obj
Object {someKey: "someValue"}

아무 문제 없이 키 값이 필요하고 따옴표가 없는 경우에는 사용할 수 없기 때문에 그렇지 않으면 사용할 수 없기 때문에 "키에 대한 따옴표는 필요 없습니다"라고 말할 필요가 없습니다.비록 그들이 기술적으로 현이라고 말하는 것이 옳다 하더라도.논리와 용법은 다르다.또한 이 예에서는 obj의 오브젝트 {"someKey": "someValue"}를 브라우저 콘솔에서 공식적으로 출력하지 않습니다.

언급URL : https://stackoverflow.com/questions/949449/do-the-json-keys-have-to-be-surrounded-by-quotes