Создание упорядоченной строки JSON из объекта JS

var data = {};
$('.table-row').each(function(i, el) {
   var key = $(el).find('.key').val();
   var value = $(el).find('.value').val();
   data[key] = value ;
}
var json = JSON.stringify(data);
// output unordered JSON string, since associative object does not preserve order
console.info(json);

Как создать упорядоченную строку JSON, в которой ключи упорядочены в порядке вставки?

Например, когда table-row содержит элементы в следующем порядке - a, x, c, мне нужно получить строку JSON, такую ​​как эта {a: 1, x:2, c: 'value001'}

Зачем тебе это нужно?

Felix Kling 09.08.2018 23:28

@imtheman, как этот вопрос связан с исходным вопросом? java vs javascript, другой язык, разные проблемы

user12384512 09.08.2018 23:31

@FelixKling Я отправляю произвольные данные на сервер (ассоциативный массив), и мне нужно сохранить порядок массива. Мне кажется, самый простой способ сделать это - сериализовать в JSON.

user12384512 09.08.2018 23:45

Даже если вы можете правильно упорядочить свойства в JSON, нет гарантии, что язык на стороне сервера сохранит порядок (вы можете переключиться на другой язык в будущем). Если вам абсолютно необходим порядок, используйте массив.

Felix Kling 09.08.2018 23:47

Это действительно похоже на проблему XY

charlietfl 09.08.2018 23:48

Мы говорим здесь о порядке обхода DOM?

ibrahim tanyalcin 10.08.2018 00:01

@ibowankenobi в приведенном выше примере порядок ключей в строке JSON должен совпадать с порядком обхода DOM. Но вместо порядка обхода DOM это может быть итерация по упорядоченному массиву

user12384512 10.08.2018 00:12

@FelixKling в любом случае, я согласен с вами, что JSON не предназначен для упорядоченной итерации, независимо от того, какой язык программирования используется. Так что, возможно, имеет смысл закрыть вопрос

user12384512 10.08.2018 00:13

Один вопрос, почему вы не хотели использовать массив массивов? [[k, v], [k, v] ...] и т. д.?

ibrahim tanyalcin 10.08.2018 00:19

Похоже, вы себя обманули. Как показывает обсуждение здесь, ваша структура данных не является ассоциативным массивом, состоящим из пар ключ-значение, а вместо этого представляет собой упорядоченный список элементов, которые случайно имеют свойства, называемые key и value. По крайней мере, некоторая часть ассоциации значений, похоже, осуществляется с помощью индекса (позиция), а не только с помощью key. Возможно, вам стоит изменить то, как вы смотрите / воспринимаете свои данные

Thomas 10.08.2018 00:24

Вместо этого вы можете хранить массив ключей и массив значений, например 'table-row_keys': table-row.keys и аналогичные значения. Затем при разборе json вам просто нужно снова объединить их. Немного дополнительной работы, но поддержит ваш порядок.

obermillerk 10.08.2018 00:34

@Thomas - это типичная хеш-карта, где записи упорядочены по порядку вставки. Очень распространенная структура данных на нескольких языках. В Java это называется LinkedHashMap.

user12384512 12.08.2018 00:27
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
13
123
1

Ответы 1

Если table-row является объектом, порядок элементов в table-row не гарантируется. Гарантирует ли JavaScript порядок собственности объекта?

Возможно, вам лучше начать с массива или КАРТА для хранения ваших заказанных ключей, что упростит преобразование в строку JSON того же порядка.

4395647 репост устаревшей, теперь неточной информации - получил одобрение. Кто-нибудь вообще читал предупреждения, выделенные жирным шрифтом, на связанный вопрос?

ASDFGerte 09.08.2018 23:38

Другие вопросы по теме