Формат JSON сознательно основан на подмножестве литерального синтаксиса объекта JavaScript и литерального синтаксиса массива, а объекты JavaScript могут иметь только строки в качестве ключей - таким образом, ключи JSON также являются строками. (Хорошо, вы можете сортировать числа в качестве ключей объектов JavaScript, но на самом деле они преобразуются в строки.)
Обратите внимание, что смысл JSON в том, что это строковое представление данных, позволяющее легко обмениваться программами, написанными на разных языках, работающих на разных машинах в разных средах. Если вы хотите использовать объект в качестве ключа, то этот объект, в свою очередь, должен быть как-то представлен в виде строки для передачи, но тогда принимающему языку нужно будет иметь возможность использовать объекты в качестве ключей, и это будет означать, что вам потребуется ограниченное подмножество JSON для тех языков, которые были бы просто беспорядком.
«Учитывая, что JSON является частью JavaScript»
Нет, это не так. Более новые браузеры предоставляют методы для создания и анализа JSON, но они не являются частью языка как такового, за исключением того, что JSON является строковым форматом, а JavaScript может выполнять строки. JSON всегда строковое представление - его необходимо проанализировать, чтобы создать объект для использования в JavaScript (или других языках), и как только это произойдет, JavaScript (или другие языки) будут обрабатывать полученный объект так же, как и любой другой. другой объект.
(Обратите также внимание, что конкретный бит JSON вовсе не обязательно должен иметь какие-либо ключи: это может быть просто массив, например '["one","two","three"]'
.)