JSON 키에 하이픈을 사용하는 것은 나쁜 습관입니까?


12

하이픈 (kebab-case)을 사용하는 JSON 키에 액세스하는 것과 관련하여 많은 질문이 있지만 이제는 키에서 camelCase 또는 snake_case를 고수 해야하는지 궁금합니다. 하이픈은 언어간에 이식 될 때 복잡한 매핑을 만들 수도 있다는 것을 알고 있습니다. 일부 JSON deserialize 라이브러리가 해당 키를 camelCase 스타일로 변환하는 것을 보았습니다.

예:

var something = {
  "some-value": 'thing'
}

대

var something = {
  "someValue": 'thing',
  "some_other_value": 'thing_two'
}

4
REST는 페이로드 형식에 대해 아무 말도하지 않습니다.
— Eric Stein

2
왜 JSON에서 케밥 케이스를 사용합니까? 프로그래밍 환경의 명명 규칙을 따르는 것이 항상 좋은 습관이고 JavaScript의 변수에 camelCase를 사용하는 것이 일반적이기 때문에 사람들은 일반적으로 JSON에 camelCase를 사용합니다. JSON을 사용하여 JavaScript와 통신한다고 가정합니다.
— Alternatex

1
질문에 자바 스크립트가 태그되어 있지만 질문 자체는 다른 언어 / 라이브러리 간의 API에 관한 것 같습니다. 자바 스크립트에 관심이있는 경우 점 표기법이 하이픈과 함께 작동하지 않습니다.
— 이즈 카타

5
JSON은 언어에 독립적이므로 특정 언어의 구문으로 제한되어서는 안되므로 실제로 나쁜 습관은 아닙니다. 즉, 모든 주류 언어의 식별자에 직접 매핑 할 수 있기 때문에 영숫자 문자 만 사용하는 것이 합리적이므로 매핑 문제가 최소화됩니다.
— JacquesB

1
@Alternatex : "kebab-case"의 경우 +1 :-)
— gnasher729

답변:


13

유효한 UTF-8이고 0 코드 포인트를 포함하지 않는 한 JSON 키로 무엇이든 사용할 수 있으며 선택한 프로그래밍 언어에서 키를 문자열로 나타낼 수 있으면 유용합니다. 동일한 문자열의 다른 유니 코드 표현 (예 : 하나 또는 두 개의 코드 포인트로 작성된 "Ä")을 사용하지 않는 것이 좋습니다.

주석 읽기 : 일부 사람들은 JSON 사전의 키와 일치하는 인스턴스 변수로 클래스를 작성하려고합니다. COBOL을 작성하지 않으면 키가 "일부 값"인 경우 어떤 것이 작동하지 않습니까? 나는 이것이 잘못 인도되었다고 생각합니다. 나는 길 설계 모델 클래스가 내가 그들을하고자합니다. JSON은 방금 모델 클래스를 채우는 데 사용됩니다. 나는 서버 남자가 키의 사용에 넣어하기로 결정대로 할게요 내 모델 객체.


1
urg, 소비 프로그램이 json 키에 액세스하는 방법에 대한 질문을합니다. 일반적으로 이것은 json을 객체로 파싱하여 수행됩니다. 이를 방지하는 하이펜 또는 기타 문자를 사용하면 소비자의 삶이 어려워집니다
— Ewan

그리고 이것은 유효합니다 : { "❓": "✅"}
— Vinicius Brasil

1
하이픈은 어떻게 방지합니까? 사전을 가져 와서 "some-key"를 키로 사용할 수 있으며 "❓"를 키로 사용할 수도 있습니다.
— gnasher729

9

통합 된 언어로 사용하기에 적합하지 않은 필드 이름 간의 매핑을 처리 할 수있는 JSON 직렬화 시스템이 많이 있습니다. 대부분의 경우 사용하기 어렵지 않으며 약간의 추가 노력 만 필요합니다. 이상적인 세상에서는 꼭 할 필요는 없지만 API가 이미 대시를 사용하는 경우 변경하는 것이 질병보다 더 나빠질 수 있습니다. 또한 대시 사용은 특정 언어, 특히 LISP를 기반으로하는 언어에서 가장 일반적인 스타일이므로 다른 형식보다는 대시를보고 싶어하는 API 소비자가 소수 일 것입니다.


통찰력을 얻은 최대한 빨리 투표하겠습니다. 감사합니다.
— 매트 오악 사카

1

업계에서 시간을 보내고 몇 가지 시스템을 작업 한 후. JSON 키에 대한 모범 사례 또는 적절한 케이스가 있다고 생각하지 않습니다. 모든 형식 (케이싱 / 코드 스타일 등)의 가장 중요한 측면은 일관성과 팀 채택입니다.

코드베이스가 조각화되고 일관성이 없으면 팀으로 만나 일관된 스타일에 동의 한 다음 형식을 종합적으로 감시하십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.