Posting dan jawab karena ada banyak ide usang dan kebingungan tentang standar. Pada Desember 2017, ada dua standar yang bersaing:
RFC 8259 - https://tools.ietf.org/html/rfc8259
ECMA-404 - http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-404.pdf
json.org menyarankan ECMA-404 adalah yang standar, tapi situs ini tidak muncul untuk menjadi otoritas. Meskipun saya pikir adil untuk menganggap ECMA otoritas, yang penting di sini adalah, satu-satunya perbedaan antara standar (mengenai kunci unik) adalah bahwa RFC 8259 mengatakan kunci harus unik, dan ECMA-404 mengatakan mereka tidak diharuskan untuk menjadi ECMA-404. unik.
RFC-8259:
"Nama-nama dalam suatu objek HARUS unik."
Kata "harus" dalam semua huruf besar seperti itu, memiliki makna di dalam dunia RFC, yang secara spesifik didefinisikan dalam standar lain (BCP 14, RFC 2119 - https://tools.ietf.org/html/rfc2119 ) sebagai,
- HARUS Kata ini, atau kata sifat "DIREKOMENDASIKAN", berarti bahwa mungkin ada alasan yang valid dalam keadaan tertentu untuk mengabaikan item tertentu, tetapi implikasi penuh harus dipahami dan ditimbang dengan hati-hati sebelum memilih kursus yang berbeda.
ECMA-404:
"Sintaks JSON tidak memaksakan batasan pada string yang digunakan sebagai nama, tidak mengharuskan string nama menjadi unik, dan tidak memberikan signifikansi apa pun pada urutan pasangan nama / nilai."
Jadi, tidak masalah bagaimana Anda mengirisnya, JSON itu secara sintaksis valid .
Alasan yang diberikan untuk rekomendasi kunci unik di RFC 8259 adalah,
Objek yang namanya unik semuanya dapat dioperasikan dalam arti bahwa semua implementasi perangkat lunak yang menerima objek tersebut akan menyetujui pemetaan nama-nilai. Ketika nama-nama dalam suatu objek tidak unik, perilaku perangkat lunak yang menerima objek seperti itu tidak dapat diprediksi. Banyak implementasi melaporkan hanya pasangan nama / nilai terakhir. Implementasi lain melaporkan kesalahan atau gagal menguraikan objek, dan beberapa implementasi melaporkan semua pasangan nama / nilai, termasuk duplikat.
Dengan kata lain, dari sudut pandang RFC 8259, itu valid tetapi parser Anda mungkin muntah dan tidak ada janji yang, jika ada, nilai akan dipasangkan dengan kunci itu. Dari sudut pandang ECMA-404 (yang saya pribadi anggap sebagai otoritas), sah saja, titik. Bagi saya ini berarti bahwa setiap parser yang menolak untuk menguraikannya rusak. Setidaknya harus diuraikan sesuai dengan kedua standar ini. Tetapi bagaimana hal itu berubah menjadi objek pilihan Anda, dalam hal apa pun, kunci unik atau tidak, sepenuhnya bergantung pada lingkungan dan situasi, dan tidak ada yang standar dalam memulainya.
Dictionary<string, string>