#javascript #json #insertion-order
#javascript #json #вставка-порядок
Вопрос:
Я пытаюсь отобразить некоторые данные JSON в браузере, которые поступают из приложения Python, эти данные содержат объекты с цифровыми ключами, порядок которых должен быть сохранен при анализе в Javascript. К сожалению, Javascript не сохраняет порядок ключей объектов, вместо этого сортируя цифровые клавиши в порядке возрастания.
Целью этого является отображение событий из указанных данных JSON в удобочитаемом виде, поэтому важен их порядок. Другие вопросы в том же духе предполагают перенос каждого объекта в массив, но это означало бы пожертвовать удобочитаемостью для пользователя и привело бы к модификации приложения Python, в словарях которого нет проблем с сохранением порядка вставки.
Я знаю о классе Map в Javascript, который допускает словарную структуру, сохраняя порядок вставки во всех случаях. Есть ли способ сделать JSON.parse
объекты вывода на карты? Есть ли какая-нибудь сторонняя библиотека, в которую я должен заглянуть?
Комментарии:
1. запрашивать библиотеки запрещено.
2. Структура объекта, описанная в JSON, неупорядочена. Если API требует фиксированного порядка, они должны использовать массив. Одним из вариантов было бы написать свой собственный анализатор JSON и использовать функцию обратного вызова для отслеживания порядка клавиш в массиве.
3. Если у каждого из
models
есть один объект, у которого есть один объект, и ключ этого объекта соответствует требуемому порядку, вы можете «переместить его вверх» на один уровень, и это даст вам порядок — при условии, что вы хотите5412....
раньше8618...
, как показано на вашем изображении. Если это то, что вы хотите — я могу помочь, в противном случае, как сказал @slappy, заставьте приложение Python отправлятьmodels
в виде массива.4. Я вроде как надеялся, что вы могли бы сделать это с помощью reviver, но, оказывается, вы не можете. Я думаю, что использование пользовательской библиотеки для разбора json — это ваш единственный выбор.
5. Но да, правильное решение — исправить ваш код Python, который генерирует JSON, поскольку объекты JSON определены как неупорядоченные, поэтому вам действительно не следует их использовать, если порядок важен (и не может быть восстановлен каким-либо другим способом).