[json] JSON 명명 규칙 [닫기]

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를 빌드하기위한 권장 사항)에서

다음을 권장합니다.

  1. 속성 이름은 camelCased , ASCII 문자열 이어야합니다 .

  2. 첫 번째 문자는 문자, 밑줄 (_) 또는 달러 기호 ($) 여야합니다.

예:

{
  "thisPropertyIsAnIdentifier": "identifier value"
}

우리 팀은이 규칙을 따릅니다.


답변

전제

JSON에는 표준 키 이름없습니다 . 스펙 의 오브젝트 섹션에 따르면 :

JSON 구문은 이름으로 사용되는 문자열에 제한을 두지 않습니다.

camelCase 또는 snake_case 가 제대로 작동 한다는 의미 입니다.

추진 요인

JSON 명명 규칙을 적용하는 것은 매우 혼란 스럽습니다. 그러나 구성 요소로 분류하면 쉽게 파악할 수 있습니다.

  1. JSON 생성을위한 프로그래밍 언어

    • 파이썬-snake_case
    • PHP-snake_case
    • 자바-카멜 케이스
    • 자바 스크립트-camelCase
  2. JSON 자체에는 표준 키 이름이 없습니다.

  3. JSON 구문 분석을위한 프로그래밍 언어

    • 파이썬-snake_case
    • PHP-snake_case
    • 자바-카멜 케이스
    • 자바 스크립트-camelCase

구성 요소 믹스 매치

  1. 파이썬 »JSON» 파이썬snake_case – 만장일치
  2. Python »JSON» PHPsnake_case- 만장일치
  3. Python »JSON» Javasnake_case- 아래 Java 문제 를 참조하십시오
  4. Python »JSON» JavaScriptsnake_case 가 의미가 있습니다. 어쨌든 프론트 엔드를 조이십시오
  5. Python »JSON»당신은 모른다 -snake_case 는 의미가있다; 어쨌든 파서를 조이십시오
  6. PHP »JSON» 파이썬snake_case – 만장일치
  7. PHP »JSON» PHPsnake_case – 만장일치
  8. PHP »JSON» 자바snake_case은 – 참조하십시오 자바 문제가 아래를
  9. PHP »JSON» 자바 스크립트snake_case는 의미가됩니다; 어쨌든 프론트 엔드를 조이십시오
  10. PHP »JSON»당신은 모른다 -snake_case 는 말이된다; 어쨌든 파서를 조이십시오
  11. Java »JSON» Pythonsnake_case- 아래 Java 문제 를 참조하십시오
  12. Java »JSON» PHPsnake_case- 아래 Java 문제 를 참조하십시오
  13. Java »JSON» JavacamelCase- 만장일치
  14. Java »JSON» JavaScriptcamelCase- 만장일치
  15. Java »JSON»당신은 모른다 -camelCase 는 말이된다; 어쨌든 파서를 조이십시오
  16. JavaScript »JSON» Pythonsnake_case 가 의미가 있습니다. 어쨌든 프론트 엔드를 조이십시오
  17. JavaScript »JSON» PHPsnake_case 가 의미가 있습니다. 어쨌든 프론트 엔드를 조이십시오
  18. 자바 스크립트 »JSON» 자바낙타 표기법 – 만장일치
  19. 자바 스크립트 »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 파서 측면을 알 수없는 경우 무엇이 효과가 있는지 선언 할 수 있습니다.


답변

특히 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 명명 규칙 사이 에서이 행복한 매체를 찾을 때 까지이 문제로 조금 어려움을 겪었습니다.


답변

사람들이 모든 컨벤션에서 다른 컨벤션으로의 전환을 허용하기에 충분한 변형이있는 것 같습니다 : http://www.cowtowncoder.com/blog/archives/cat_json.html

특히 언급 한 Jackson JSON 파서는 선호합니다 bean_naming.


답변

JSON에는 공식적인 명명 규칙이 없다고 생각하지만 일부 업계 리더를 따라 작동 방식을 확인할 수 있습니다.

세계 최대 IT 회사 중 하나 인 Google은 다음과 같은 JSON 스타일 가이드를 제공합니다. https://google.github.io/styleguide/jsoncstyleguide.xml

https://github.com/google/styleguide 에서 Google이 정의한 다른 스타일 가이드를 활용할 수 있습니다.


답변

다른 사람들이 언급했듯이 표준이 없으므로 스스로 선택해야합니다. 그렇게 할 때 고려해야 할 몇 가지 사항은 다음과 같습니다.

  1. JavaScript를 사용하여 JSON을 사용하는 경우 두 속성 모두에서 동일한 명명 규칙을 사용하면 시각적 일관성이 유지되고 코드를 더 명확하게 재사용 할 수 있습니다.

  2. 케밥 문자를 피해야하는 작은 이유 -는 값에 나타나는 문자 와 하이픈이 시각적으로 충돌 할 수 있기 때문 입니다.

    {
      "bank-balance": -10
    }