Apakah ada standar penamaan JSON? Saya melihat sebagian besar contoh menggunakan semua huruf kecil yang dipisahkan oleh garis bawah (huruf kecil). Tapi, bisakah Anda menggunakan PascalCase atau camelCase?
Apakah ada standar penamaan JSON? Saya melihat sebagian besar contoh menggunakan semua huruf kecil yang dipisahkan oleh garis bawah (huruf kecil). Tapi, bisakah Anda menggunakan PascalCase atau camelCase?
Jawaban:
Tidak ada standar TUNGGAL, tetapi saya telah melihat 3 gaya yang Anda sebutkan ("Pascal / Microsoft", "Java" ( camelCase
) dan "C" (garis bawah, snake_case
)) - serta setidaknya satu lagi, kebab-case
seperti longer-name
).
Sebagian besar tampaknya tergantung pada apa latar belakang pengembang layanan tersebut; mereka yang memiliki latar belakang c / c ++ (atau bahasa yang mengadopsi penamaan yang serupa, yang mencakup banyak bahasa skrip, ruby dll) sering memilih varian garis bawah; dan sisanya serupa (Java vs .NET). Perpustakaan Jackson yang disebutkan, misalnya, mengasumsikan konvensi penamaan kacang Jawa (camelCase
)
PEMBARUAN: definisi saya tentang "standar" adalah konvensi TUNGGAL. Jadi, sementara orang bisa mengklaim "ya, ada banyak standar", bagi saya ada banyak Naming Conventions
, tidak ada yang "standar" secara keseluruhan. Salah satunya dapat dianggap sebagai standar untuk platform tertentu, tetapi mengingat JSON digunakan untuk interoperabilitas antar platform yang mungkin atau mungkin tidak masuk akal.
Dalam dokumen ini Panduan Gaya Google JSON (rekomendasi untuk membangun API JSON di Google),
Ini merekomendasikan bahwa:
Nama properti harus camelCased , string ASCII.
Karakter pertama harus berupa huruf, garis bawah (_) atau tanda dolar ($).
Contoh:
{
"thisPropertyIsAnIdentifier": "identifier value"
}
Tim saya mengikuti konvensi ini.
Property Name Guidelines->Property Name Format->Choose meaningful property names.
.
Tidak ada penamaan standar kunci di JSON . Menurut bagian Objek dari spek:
Sintaks JSON tidak mengenakan batasan pada string yang digunakan sebagai nama, ...
Yang berarti camelCase atau snake_case harus bekerja dengan baik.
Memaksakan konvensi penamaan JSON sangat membingungkan. Namun, ini dapat dengan mudah diketahui jika Anda memecahnya menjadi beberapa komponen.
Bahasa pemrograman untuk menghasilkan JSON
JSON sendiri tidak memiliki standar penamaan kunci
Bahasa pemrograman untuk parsing JSON
snake_case akan tetap masuk akal bagi mereka yang memiliki entri Java karena pustaka JSON yang ada untuk Java hanya menggunakan metode untuk mengakses kunci alih-alih menggunakan dot.syntax standar . Ini berarti bahwa tidak ada salahnya bagi Java untuk mengakses kunci snake_cased dibandingkan dengan bahasa pemrograman lain yang dapat melakukan dot.syntax .
Contoh untuk paket Javaorg.json
JsonObject.getString("snake_cased_key")
Contoh untuk paket Javacom.google.gson
JsonElement.getAsString("snake_cased_key")
Memilih konvensi penamaan JSON yang tepat untuk implementasi JSON Anda tergantung pada tumpukan teknologi Anda. Ada kasus di mana satu dapat menggunakan snake_case , CamelCase , atau konvensi penamaan lain.
Satu hal yang perlu dipertimbangkan adalah bobot yang harus diletakkan pada JSON-generator vs JSON-parser dan / atau JavaScript front-end. Secara umum, lebih banyak bobot harus diletakkan pada sisi generator JSON daripada sisi parser JSON. Ini karena logika bisnis biasanya berada di sisi generator JSON.
Juga, jika sisi JSON-parser tidak diketahui maka Anda dapat mendeklarasikan apa yang bisa bekerja untuk Anda.
"Person":
bukan
Khusus untuk saya di NodeJS, jika saya bekerja dengan basis data dan nama bidang saya digarisbawahi, saya juga menggunakannya dalam kunci struct.
Ini karena bidang db memiliki banyak akronim / singkatan sehingga sesuatu seperti appSNSInterfaceRRTest terlihat agak berantakan tetapi app_sns_interface_rr_test lebih baik.
Dalam variabel Javascript semua camelCase dan nama kelas (konstruktor) adalah ProperCase, jadi Anda akan melihat sesuatu seperti
var devTask = {
task_id: 120,
store_id: 2118,
task_name: 'generalLedger'
};
atau
generalLedgerTask = new GeneralLedgerTask( devTask );
Dan tentu saja dalam kunci / string JSON yang dibungkus dengan tanda kutip ganda, tetapi kemudian Anda hanya menggunakan JSON.stringify dan lulus dalam objek JS, jadi tidak perlu khawatir tentang itu.
Saya berjuang dengan ini sedikit sampai saya menemukan media bahagia antara JSON dan konvensi penamaan JS.
org.json
, gson
. Menerima data snake_case tidak terlalu menyakitkan seperti itu ...JSONObject.get('snake_case_key_here')
Tampaknya ada cukup banyak variasi yang dilakukan orang untuk memungkinkan konversi dari semua konvensi ke konvensi lain: http://www.cowtowncoder.com/blog/archives/cat_json.html
Khususnya, parser Jackson JSON yang disebutkan lebih suka bean_naming
.
beanNaming
.
Saya pikir tidak ada konvensi penamaan resmi untuk JSON, tetapi Anda dapat mengikuti beberapa pemimpin industri untuk melihat cara kerjanya.
Google, yang merupakan salah satu perusahaan IT terbesar di dunia, memiliki panduan gaya JSON: https://google.github.io/styleguide/jsoncstyleguide.xml
Mengambil keuntungan, Anda dapat menemukan panduan gaya lain, yang didefinisikan Google, di sini: https://github.com/google/styleguide
Seperti yang orang lain katakan tidak ada standar, jadi Anda harus memilih sendiri. Berikut adalah beberapa hal yang perlu dipertimbangkan ketika melakukannya:
Jika Anda menggunakan JavaScript untuk menggunakan JSON maka menggunakan konvensi penamaan yang sama untuk properti di keduanya akan memberikan konsistensi visual dan mungkin beberapa peluang untuk menggunakan kembali kode yang lebih bersih.
Alasan kecil untuk menghindari kasus kebab adalah bahwa tanda hubung dapat berbenturan secara visual dengan -
karakter yang muncul dalam nilai.
{
"bank-balance": -10
}