Apakah praktik yang buruk untuk menggunakan tanda hubung dalam kunci JSON?

12

Saya melihat banyak pertanyaan berputar di sekitar mengakses kunci JSON yang menggunakan tanda hubung (kasus kebab), tapi sekarang saya mendapati diri saya bertanya-tanya apakah saya harus tetap menggunakan camelCase atau snake_case di kunci saya. Saya tahu tanda hubung juga dapat membuat pemetaan yang rumit saat porting antar bahasa. Saya telah melihat beberapa perpustakaan deserialize JSON mengonversi kunci-kunci tersebut ke gaya camelCase.

Contoh:

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

Vs

var something = {
  "someValue": 'thing',
  "some_other_value": 'thing_two'
}
Matt Oaxaca
sumber
4
REST tidak mengatakan apa-apa tentang format payload.
Eric Stein
2
Mengapa Anda menggunakan kebab-case di JSON? Orang-orang biasanya menggunakan camelCase untuk JSON karena itu selalu praktik yang baik untuk mengikuti konvensi penamaan lingkungan pemrograman dan itu praktik standar untuk menggunakan camelCase untuk variabel dalam JavaScript. Meskipun saya menggunakan asumsi bahwa Anda menggunakan JSON untuk berkomunikasi dengan JavaScript.
Alternatex
1
Saya melihat pertanyaan ini ditandai dengan javascript, tetapi pertanyaan itu sendiri tampaknya tentang API antara berbagai bahasa / perpustakaan. Jika Anda khawatir dengan javascript, perhatikan bahwa notasi titik tidak berfungsi dengan tanda hubung.
Izkata
5
Ini sebenarnya bukan praktik yang buruk, karena JSON independen terhadap bahasa dan karenanya tidak boleh dibatasi oleh sintaksis bahasa tertentu. Yang mengatakan, masuk akal untuk menggunakan hanya karakter alfanumerik, karena ini dapat memetakan langsung ke pengidentifikasi dalam semua bahasa utama, jadi ini hanya akan menyebabkan paling sedikit masalah pemetaan.
JacquesB
1
@Alternatex: +1 untuk "kebab-case" :-)
gnasher729

Jawaban:

13

Anda bisa menggunakan apa saja sebagai kunci JSON, selama itu valid UTF-8, tidak mengandung titik kode nol, dan akan berguna jika Anda bisa mewakili kunci tersebut sebagai string dalam bahasa pemrograman pilihan Anda. Saya mungkin menyarankan untuk tidak menggunakan representasi Unicode berbeda dari string yang sama (misalnya "Ä" ditulis sebagai satu atau dua poin kode).

Membaca beberapa komentar: Tampaknya beberapa orang mencoba membuat kelas dengan variabel instan yang cocok dengan kunci dalam kamus JSON. Yang tentu saja tidak berfungsi jika kunci Anda adalah "beberapa nilai" kecuali jika Anda menulis COBOL. Saya pikir ini salah arah. Saya memiliki kelas model yang dirancang seperti yang saya inginkan. JSON hanya digunakan untuk mengisi kelas model. Saya akan mengambil apa pun yang diputuskan oleh server untuk digunakan sebagai kunci dan memasukkannya ke dalam objek model saya .

gnasher729
sumber
1
mendesak, Anda mengajukan pertanyaan tentang bagaimana program konsumsi Anda mengakses kunci json. Biasanya ini dilakukan dengan mem-parsing json sebagai objek. Menggunakan tanda hubung atau karakter lain yang mencegah hal ini hanya membuat hidup sulit bagi konsumen Anda
Ewan
Dan ini berlaku: {"❓": "✅"}
Vinicius Brasil
1
Bagaimana tanda hubung mencegah sesuatu? Saya mendapatkan kamus, dan dapat menggunakan "beberapa kunci" sebagai kunci, saya bahkan dapat menggunakan "❓" sebagai kunci.
gnasher729
9

Ada banyak sistem serialisasi JSON yang lebih dari mampu menangani pemetaan antara nama-nama bidang yang tidak cocok untuk digunakan dalam bahasa yang mereka integrasikan. Dalam kebanyakan kasus, mereka tidak sulit digunakan, dan hanya membutuhkan sedikit usaha ekstra. Di dunia yang ideal, Anda tidak perlu melakukannya, tetapi jika API Anda sudah menggunakan tanda hubung, mengubahnya akan lebih buruk daripada penyakitnya. Perhatikan juga bahwa menggunakan tanda hubung adalah gaya yang paling umum dalam bahasa tertentu, terutama yang menggunakan LISP, jadi mungkin ada minoritas yang diam dari konsumen API Anda yang senang melihat tanda hubung daripada format lain.

Jules
sumber
Saya akan memilih ASAP ini saya menemukan wawasan di dalamnya, Terima kasih.
Matt Oaxaca
1

Setelah menghabiskan beberapa waktu di industri dan bekerja beberapa sistem. Saya tidak berpikir ada praktik terbaik atau casing yang tepat untuk kunci JSON. Aspek terpenting dari setiap pemformatan (casing / code-style / etc) adalah konsistensi dan adopsi tim.

Jika basis kode terfragmentasi dan tidak konsisten, bertemu sebagai satu tim dan menyepakati gaya yang konsisten, maka polisi formasi secara kolektif.

Matt Oaxaca
sumber