| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Perl: Общие вопросы > JSON модуль, сохраняющий порядок ключей |
| Автор: Logo 26.3.2012, 05:26 |
| Есть ли в Perl модуль, который помнит порядок ключей json в исходной строке? т.е. так, что бы например в '{"a":1,"b":2,"c":3}' изменить b, и вернуть строку json с тем же порядком a, b, c? |
| Автор: Pfailed 26.3.2012, 05:49 |
| Можно попробовать занаследоваться от любого существующего класса, который умеет парсить JSON и переопределить метод, где собственно парсится JSON объект (в Perl получается hash). Вместо обычного хеша нужно использовать хеш, который сохраняет последовательность добавляемых элементов, например я нашел Tie::IxHash. |
| Автор: reiserford 26.3.2012, 11:59 |
| Data::Dumper умеет и сохранять порядок ключей, и, если задать соотв. параметры, выводить данные в json-виде. |
| Автор: Pfailed 27.3.2012, 18:55 | ||
Если тс так и не смог решить задачу, вот моё решение:
Решить задачу через наследование не удалось, JSON::PP не спроектирован для наследования. Зато через переопределение всё делается очень коротко, достаточно было взглянуть на код JSON::PP. |
| Автор: Logo 28.3.2012, 01:12 |
| Спасибо |
| Автор: tishaishii 28.3.2012, 15:32 | ||
|
| Автор: Pfailed 28.3.2012, 16:01 |
| tishaishii, ваше решение не работает. Посмотрите код JSON::PP. |
| Автор: Logo 2.4.2012, 04:00 |
| Интересно, JSON::XS уже наверно будет не так просто изменить... |
| Автор: Pfailed 2.4.2012, 09:45 |
| Logo, ага, похоже только модификация исходного кода поможет. |