JSON 명명에 대한 표준이 있습니까? 밑줄 (lower_case)로 구분 된 모든 소문자를 사용하는 대부분의 예제를 봅니다. 그러나 PascalCase 또는 camelCase를 사용할 수 있습니까?
JSON 명명에 대한 표준이 있습니까? 밑줄 (lower_case)로 구분 된 모든 소문자를 사용하는 대부분의 예제를 봅니다. 그러나 PascalCase 또는 camelCase를 사용할 수 있습니까?
답변:
SINGLE 표준은 없지만 언급 한 3 가지 스타일 ( "Pascal / Microsoft", "Java"( camelCase
) 및 "C"(밑줄, snake_case
)) kebab-case
과 같은 스타일을 하나 이상 보았습니다 longer-name
.
문제의 서비스 개발자가 무엇을 가지고 있는지에 달려있는 것 같습니다. c / c ++ 배경을 가진 사람들 (또는 많은 명명 언어를 포함하는 유사한 이름을 채택하는 언어, 루비 등)은 종종 밑줄 변형을 선택합니다. 비슷하게 휴식하십시오 (자바 대 .NET). 예를 들어 언급 된 Jackson 라이브러리는 Java Bean 명명 규칙 ( camelCase
)을 가정합니다.
업데이트 : "표준"에 대한 나의 정의는 단일 규칙입니다. 따라서 "그렇다, 많은 표준이있다"고 주장 할 수는 있지만, 나에게는 여러 가지가 있지만 Naming Conventions
전체적으로 "The"표준은 없다. 그중 하나는 특정 플랫폼의 표준으로 간주 될 수 있지만 JSON은 많은 의미가 있거나 그렇지 않은 플랫폼 간의 상호 운용성에 사용된다는 점을 고려할 때.
이 문서에서 Google JSON 스타일 가이드 (Google에서 JSON API를 빌드하기위한 권장 사항)에서
다음을 권장합니다.
속성 이름은 camelCased , ASCII 문자열 이어야합니다 .
첫 번째 문자는 문자, 밑줄 (_) 또는 달러 기호 ($) 여야합니다.
예:
{
"thisPropertyIsAnIdentifier": "identifier value"
}
우리 팀은이 규칙을 따릅니다.
Property Name Guidelines->Property Name Format->Choose meaningful property names.
.
JSON에는 표준 키 이름 이 없습니다 . 스펙 의 오브젝트 섹션에 따르면 :
JSON 구문은 이름으로 사용되는 문자열에 제한을 두지 않습니다.
camelCase 또는 snake_case 가 제대로 작동 한다는 의미 입니다.
JSON 명명 규칙을 적용하는 것은 매우 혼란 스럽습니다. 그러나 구성 요소로 분류하면 쉽게 파악할 수 있습니다.
JSON 생성을위한 프로그래밍 언어
JSON 자체에는 표준 키 이름이 없습니다.
JSON 구문 분석을위한 프로그래밍 언어
snake_case 는 Java 용 기존 JSON 라이브러리가 표준 dot.syntax 대신 키에 액세스하는 메소드 만 사용하므로 Java 항목이있는 사용자에게는 여전히 의미가 있습니다 . 자바는 액세스하는 것이 그 정도를 해치지 않을 것이라고이 수단 snake_cased 할 수있는 다른 프로그래밍 언어에 비해 키를 dot.syntax을 .
Java 패키지 의 예org.json
JsonObject.getString("snake_cased_key")
Java 패키지 의 예com.google.gson
JsonElement.getAsString("snake_cased_key")
JSON 구현에 적합한 JSON 이름 지정 규칙을 선택하는 것은 기술 스택에 따라 다릅니다. snake_case , camelCase 또는 다른 명명 규칙을 사용할 수있는 경우가 있습니다 .
고려해야 할 또 다른 사항은 JSON 생성기 대 JSON 파서 및 / 또는 프론트 엔드 JavaScript에 부과되는 가중치입니다. 일반적으로 JSON 파서 쪽이 아닌 JSON 생성기쪽에 더 많은 가중치를 두어야합니다. 비즈니스 로직은 일반적으로 JSON 생성기쪽에 있기 때문입니다.
또한 JSON 파서 측면을 알 수없는 경우 무엇이 효과가 있는지 선언 할 수 있습니다.
"Person":
is camelCase :)
특히 NodeJS에서 데이터베이스 작업 중이고 필드 이름이 밑줄로 구분되어 있으면 구조체 키에도 사용합니다.
db 필드에는 두문자어 / 약어가 많기 때문에 appSNSInterfaceRRTest 와 같은 것이 약간 지저분하지만 app_sns_interface_rr_test 가 더 좋기 때문 입니다.
자바 스크립트에서 변수는 모두 camelCase이고 클래스 이름 (생성자)은 ProperCase이므로 다음과 같은 것을 볼 수 있습니다
var devTask = {
task_id: 120,
store_id: 2118,
task_name: 'generalLedger'
};
또는
generalLedgerTask = new GeneralLedgerTask( devTask );
물론 JSON 키 / 문자열은 큰 따옴표로 묶여 있지만 JSON.stringify를 사용하고 JS 객체를 전달하면되므로 걱정할 필요가 없습니다.
JSON과 JS 명명 규칙 사이 에서이 행복한 매체를 찾을 때 까지이 문제로 조금 어려움을 겪었습니다.
org.json
, gson
. snake_case 데이터를받는 것은 그렇게 많이 아프지 않습니다 ...JSONObject.get('snake_case_key_here')
사람들이 모든 컨벤션에서 다른 컨벤션으로의 전환을 허용하기에 충분한 변형이있는 것 같습니다 : http://www.cowtowncoder.com/blog/archives/cat_json.html
특히 언급 한 Jackson JSON 파서는 선호합니다 bean_naming
.
beanNaming
합니다.
JSON에는 공식적인 명명 규칙이 없다고 생각하지만 일부 업계 리더를 따라 작동 방식을 확인할 수 있습니다.
세계 최대 IT 회사 중 하나 인 Google은 다음과 같은 JSON 스타일 가이드를 제공합니다. https://google.github.io/styleguide/jsoncstyleguide.xml
https://github.com/google/styleguide 에서 Google이 정의한 다른 스타일 가이드를 활용할 수 있습니다.
다른 사람들이 언급했듯이 표준이 없으므로 스스로 선택해야합니다. 그렇게 할 때 고려해야 할 몇 가지 사항은 다음과 같습니다.
JavaScript를 사용하여 JSON을 사용하는 경우 두 속성 모두에서 동일한 명명 규칙을 사용하면 시각적 일관성이 유지되고 코드를 더 명확하게 재사용 할 수 있습니다.
케밥 문자를 피해야하는 작은 이유 -
는 값에 나타나는 문자 와 하이픈이 시각적으로 충돌 할 수 있기 때문 입니다.
{
"bank-balance": -10
}