Có một tiêu chuẩn về đặt tên JSON không? Tôi thấy hầu hết các ví dụ sử dụng tất cả các chữ thường được phân tách bằng dấu gạch dưới (low_case). Nhưng, bạn có thể sử dụng PascalCase hoặc camelCase không?
Có một tiêu chuẩn về đặt tên JSON không? Tôi thấy hầu hết các ví dụ sử dụng tất cả các chữ thường được phân tách bằng dấu gạch dưới (low_case). Nhưng, bạn có thể sử dụng PascalCase hoặc camelCase không?
Câu trả lời:
Không có tiêu chuẩn SINGLE, nhưng tôi đã thấy 3 kiểu bạn đề cập ("Pascal / Microsoft", "Java" ( camelCase
) và "C" (gạch dưới, snake_case
)) - cũng như ít nhất một kiểu nữa, kebab-case
nhưlonger-name
).
Nó chủ yếu dường như phụ thuộc vào những nhà phát triển nền tảng của dịch vụ được đề cập; những người có nền c / c ++ (hoặc ngôn ngữ áp dụng cách đặt tên tương tự, bao gồm nhiều ngôn ngữ script, ruby, v.v.) thường chọn biến thể gạch dưới; và phần còn lại tương tự (Java vs .NET). Thư viện Jackson đã được đề cập, ví dụ, giả sử quy ước đặt tên đậu Java (camelCase
)
CẬP NHẬT: định nghĩa của tôi về "tiêu chuẩn" là một quy ước SINGLE. Vì vậy, trong khi người ta có thể tuyên bố "có, có nhiều tiêu chuẩn", với tôi có nhiều tiêu chuẩn, không có tiêu chuẩn Naming Conventions
nào là "Tiêu chuẩn". Một trong số chúng có thể được coi là tiêu chuẩn cho nền tảng cụ thể, nhưng cho rằng JSON được sử dụng cho khả năng tương tác giữa các nền tảng có thể có hoặc không có ý nghĩa nhiều.
Trong tài liệu này, Google JSON Style Guide (các đề xuất xây dựng API JSON tại Google),
Nó khuyến nghị rằng:
Tên thuộc tính phải là camelCasing , chuỗi ASCII.
Ký tự đầu tiên phải là một chữ cái, dấu gạch dưới (_) hoặc ký hiệu đô la ($).
Thí dụ:
{
"thisPropertyIsAnIdentifier": "identifier value"
}
Nhóm của tôi theo quy ước này.
Property Name Guidelines->Property Name Format->Choose meaningful property names.
.
Không có cách đặt tên chuẩn trong JSON . Theo phần Đối tượng của thông số kỹ thuật:
Cú pháp JSON không áp đặt bất kỳ hạn chế nào đối với các chuỗi được sử dụng làm tên, ...
Có nghĩa là camelCase hoặc Snake_case sẽ hoạt động tốt.
Áp đặt một quy ước đặt tên JSON là rất khó hiểu. Tuy nhiên, điều này có thể dễ dàng được tìm ra nếu bạn chia nó thành các thành phần.
Ngôn ngữ lập trình để tạo JSON
Bản thân JSON không có cách đặt tên chuẩn
Ngôn ngữ lập trình để phân tích cú pháp JSON
Snake_case vẫn sẽ có ý nghĩa đối với những người có các mục nhập Java vì các thư viện JSON hiện có cho Java chỉ sử dụng các phương thức để truy cập các khóa thay vì sử dụng dot.syntax tiêu chuẩn . Điều này có nghĩa là Java sẽ không làm tổn hại nhiều đến việc Java truy cập các khóa con rắn so với ngôn ngữ lập trình khác có thể thực hiện dot.syntax .
Ví dụ cho gói Javaorg.json
JsonObject.getString("snake_cased_key")
Ví dụ cho gói Javacom.google.gson
JsonElement.getAsString("snake_cased_key")
Việc chọn quy ước đặt tên JSON phù hợp cho việc triển khai JSON của bạn phụ thuộc vào ngăn xếp công nghệ của bạn. Có những trường hợp người ta có thể sử dụng Snake_case , camelCase hoặc bất kỳ quy ước đặt tên nào khác.
Một điều khác cần xem xét là trọng số được đặt trên trình tạo JSON so với trình phân tích cú pháp JSON và / hoặc JavaScript giao diện người dùng. Nói chung, nên đặt nhiều trọng lượng hơn về phía trình tạo JSON thay vì phía trình phân tích cú pháp JSON. Điều này là do logic nghiệp vụ thường nằm ở phía trình tạo JSON.
Ngoài ra, nếu không biết phía trình phân tích cú pháp JSON thì bạn có thể khai báo những gì có thể làm việc cho bạn.
"Person":
không phải là camelCase :)
Đáng chú ý đối với tôi trên NodeJS, nếu tôi đang làm việc với cơ sở dữ liệu và tên trường của tôi được phân tách dưới, tôi cũng sử dụng chúng trong các khóa cấu trúc.
Điều này là do các trường db có rất nhiều từ viết tắt / viết tắt nên một cái gì đó như appSNSInterfaceRRTest trông hơi lộn xộn nhưng app_sns_interface_rr_test đẹp hơn.
Trong các biến Javascript, tất cả các tên camelCase và tên lớp (hàm tạo) là RightCase, vì vậy bạn sẽ thấy một cái gì đó như
var devTask = {
task_id: 120,
store_id: 2118,
task_name: 'generalLedger'
};
hoặc là
generalLedgerTask = new GeneralLedgerTask( devTask );
Và tất nhiên trong các khóa / chuỗi JSON được gói trong hai dấu ngoặc kép, nhưng sau đó bạn chỉ cần sử dụng JSON.opesify và truyền vào các đối tượng JS, vì vậy không cần phải lo lắng về điều đó.
Tôi đã vật lộn với điều này một chút cho đến khi tôi tìm thấy phương tiện hạnh phúc này giữa các quy ước đặt tên JSON và JS.
org.json
, vd gson
. Nhận dữ liệu của sn_case không ảnh hưởng nhiều như vậy ...JSONObject.get('snake_case_key_here')
Có vẻ như có đủ biến thể mà mọi người bỏ qua để cho phép chuyển đổi từ tất cả các quy ước sang người khác: http://www.cowtowncoder.com/blog/archives/cat_json.html
Đáng chú ý, trình phân tích cú pháp Jackson JSON được đề cập thích hơn bean_naming
.
beanNaming
.
Tôi nghĩ rằng không có quy ước đặt tên chính thức cho JSON, nhưng bạn có thể theo dõi một số nhà lãnh đạo trong ngành để xem nó hoạt động như thế nào.
Google, một trong những công ty CNTT lớn nhất thế giới, có hướng dẫn về kiểu JSON: https://google.github.io/styleguide/jsoncstyleguide.xml
Tận dụng lợi thế, bạn có thể tìm thấy hướng dẫn về kiểu dáng khác, mà Google xác định, tại đây: https://github.com/google/styleguide
Như những người khác đã tuyên bố không có tiêu chuẩn, vì vậy bạn nên chọn một mình. Dưới đây là một vài điều cần xem xét khi làm như vậy:
Nếu bạn đang sử dụng JavaScript để sử dụng JSON thì việc sử dụng cùng một quy ước đặt tên cho các thuộc tính trong cả hai sẽ cung cấp tính nhất quán trực quan và có thể một số cơ hội để sử dụng lại mã sạch hơn.
Một lý do nhỏ để tránh trường hợp kebab là các dấu gạch nối có thể xung đột trực quan với các -
ký tự xuất hiện trong các giá trị.
{
"bank-balance": -10
}