Примерно год назад начинал писать простенький JSON Viewer в Delphi. Но, в результате ряда объективных на тот момент причин, пришлось разработку остановить и заняться другим проектом. Сегодня появилась свободная минутка — дописал инструмент. Может кому-то пригодиться. Итак, что умеет этот JSON Viewer:
- Загружать JSON-данные:
- из буфера обмена
- из файла (с расширениями txt или json)
- с заданного URL (в т.ч. и с авторизацией по OAuth)
- Строить дерево элементов JSON
- Копировать в буфер обмена:
- «Сырой» JSON из текстового редактора
- Имя отдельной пары
- Значение пары
- Пару полностью, т.е. «Ключ : Значение»
- Удалять из «сырого» JSON лишние пробелы
- Форматировать JSON-объект (Pretty-Print)
- Показывать количество дочерних узлов в дереве JSON и размер узла в байтах.
Внешний вид программы следующий:
Вкладка «Главная»
Группа «JSON»
Здесь можно:
- загрузить данные JSON из буфера обмена (опция по умолчанию на кнопке «Вставить»)
- загрузить JSON из файла — для этого у кнопки «Вставить» имеется меню
- загрузить JSON с заданного URL (кнопка «Загрузить с URL»)
- очистить текстовый редактор
- скопировать или вырезать выделенный текст из текстового редактора в буфер обмена.
Про загрузку JSON c заданного URL следует сказать немного подробнее. После нажатия на кнопку «Загрузить с URL» появится следующий диалог:
Во второе поле (OAuth Access Token) следует писать только значение ключа, например:
12ccccc34556767asdfg
Если ключ доступа передан в программу, то при загрузке данных будет сформирован HTTP-заголовок следующего вида:
Authorization: OAuth 12ccccc34556767asdfg
В остальном загрузка с URL ничем не отличается от загрузки из файла. Если вы загружаете JSON-данные с URL или из файла, то программа сохраняет эти сведения в меню последних загруженных данных:
В последствии вы можете в один клик повторить загрузку JSON-документа из файла или с URL.
Группа «Редактирование»
Здесь вы можете в один клик удалить лишние пробелы и, тогда JSON, представленный на рисунке выше, станет выглядеть вот так:
Или же наоборот — отформатировать JSON так, чтобы он был удобочитаемым, то есть вернуть его к вот такому виду:
Вкладка «Просмотр»
Если в текстовый редактор были загружены корректные данные, то, перейдя на вкладку «просмотр», можно увидеть дерево JSON:
В дереве у каждого типа узла своя иконка:
- Объект — фигурные скобки
- Массив — квадратные скобки
- Строка — синяя точка
- Число — зеленая точка
- Boolean — желтая точка
- NULL — красная точка
Выбрав в дереве узел, слева можно увидеть список пар «Имя: Значение». Например, на рисунке выше я выбрал узел объекта — программа показала все пары этого JSON-объекта. Если выбрать узел массива, то список значений будет таким:
Группа «Узел JSON»
Здесь расположена всего одна кнопка «Копировать» с несколькими опциями:
Так, выбрав в дереве какой-либо узел вы можете скопировать его значение, имя или же полностью пару, если это возможно.
Группа «Вид»
Меняет внешний вид дерева.
Кнопка «Раскрыть дерево» полностью разворачивает или сворачивает узлы дерева.
Кнопка «Количество элементов» позволяет показывать/скрывать количество дочерних элементов узла:
Кнопка «Размер узла» позволяет показывать/скрывать размер узла в байтах:
Вот, собственно и все возможности — просто, но, в принципе, достаточно.
Чего не стоит ждать от этой версии программы, так это возможности парсить гигантские JSON. Ещё раз — писал программку под свои нужды, то есть работу с относительно небольшими JSON-объектами — до 20-30 Мб. Поэтому могу с уверенностью сказать, что эта версия не потянет JSON размером в 100 Мб и более. В случае интереса к программе можно будет обеспечить и эту возможность, благо сейчас не 2005 год и компонентов для работы с JSON, в том числе и очень большими JSON в Delphi сейчас хватает с избытком.
Для тех, кто заинтересовался — ссылка на скачивание программы для открытия файлов json:
Симпатичный просмотрщик, спасибо!
Не хватает возможности искать и фильтровать. Т.е. например, если дерево большое, то не удобно бродить по нему в поисках какой-то ноды. Аналогично — фильтрация, т.е отображение только тех узлов, которые соответствуют фильтру.
Спасибо за комментарий, Александр. Я уже тоже об этом подумал…ну и плюс — проблемы с UTF-8 вылезли при просмотре в текстовом редакторе. Попробую реализовать в будущей версии
У меня сервис возвращает данные как в json так и в xml, в итоге через программу нельзя задать Content-Type , по умолчанию приходит xml и не работает :( печалька
На больших объемах json «тупит» (если б не это, я б даже нажал кнопку «поддержкать автора»)
а так нормально, удобнее аналогов