Опублікувати та відповісти, оскільки існує багато застарілих ідей та плутанини щодо стандартів. Станом на грудень 2017 року існують два конкуруючі стандарти:
RFC 8259 - https://tools.ietf.org/html/rfc8259
ECMA-404 - http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-404.pdf
json.org пропонує ECMA-404 є стандартом, але цей сайт не виникає , щоб бути авторитетом. Хоча я вважаю, що справедливо вважати ECMA владою, але тут важливо, лише різниця між стандартами (щодо унікальних ключів) полягає в тому, що RFC 8259 говорить, що ключі повинні бути унікальними, а ECMA-404 каже, що вони не повинні бути унікальний.
RFC-8259:
"Імена в об'єкті повинні бути унікальними."
Слово "має" у всіх подібних шапках має значення у світі RFC, яке конкретно визначено в іншому стандарті (BCP 14, RFC 2119 - https://tools.ietf.org/html/rfc2119 ) як,
- ПОТРІБНО Це слово або прикметник "РЕКОМЕНДУЄМО" означають, що можуть існувати вагомі причини, коли конкретні обставини ігнорувати певний предмет, але цілісні наслідки повинні бути зрозумілі та ретельно зважені перед вибором іншого курсу.
ECMA-404:
"Синтаксис JSON не накладає жодних обмежень на рядки, що використовуються як імена, не вимагає, щоб рядки імен були унікальними, і не надавали жодного значення впорядкуванню імен / значень пар."
Отже, як би ви не нарізали його, це синтаксично дійсний JSON .
Причина, яка є унікальною ключовою рекомендацією в RFC 8259,
Об'єкт, імена якого всі унікальні, є сумісним у тому сенсі, що всі програми програмного забезпечення, що отримують цей об'єкт, погоджуються на відображення іменних значень. Коли імена всередині об'єкта не є унікальними, поведінка програмного забезпечення, яке отримує такий об'єкт, є непередбачуваним. Багато реалізацій звітують лише про прізвище / значення пари. Інші реалізації повідомляють про помилку або не вдалося проаналізувати об’єкт, а деякі реалізації звітують про всі пари імен / значень, включаючи дублікати.
Іншими словами, з точки зору RFC 8259, це дійсно, але ваш аналізатор може барф і немає жодних обіцянок щодо того, яке значення, якщо воно є, буде поєднане з цим ключем. З точки зору ECMA-404 (яку я особисто вважаю владою), це термін дії. Для мене це означає, що будь-який аналізатор, який відмовляється розібрати його, порушений. Він повинен принаймні проаналізувати обидва ці стандарти. Але те, як воно перетворюється на ваш рідний об’єкт вибору, в будь-якому випадку є унікальними ключами чи ні, повністю залежить від оточення та ситуації, і нічого з цього не є стандартним для початку.
Dictionary<string, string>