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 레퍼런스 구현(json5
npm 패키지)은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
'programing' 카테고리의 다른 글
양식 입력 필드 지우기 및 재설정 (0) | 2023.03.11 |
---|---|
WordPress - 사용자 정의 500 서버 오류 페이지를 추가하는 방법 (0) | 2023.03.11 |
angularjs 장치 테스트에서 키 업/키 다운 이벤트를 트리거하려면 어떻게 해야 합니까? (0) | 2023.03.11 |
@JpaRepository를 구현할 때 Repository가 필요하지 않습니까? (0) | 2023.03.11 |
플러그인을 사용하여 WordPress에 새 페이지 추가 (0) | 2023.03.11 |