Отправка и ответ, потому что есть много устаревших идей и путаницы в отношении стандартов. По состоянию на декабрь 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>