уважаемые посетители блога, если Вам понравилась, то, пожалуйста, помогите автору с лечением. Подробности тут.

Примерно год назад начинал писать простенький JSON Viewer в Delphi. Но, в результате ряда объективных на тот момент причин, пришлось разработку остановить и заняться другим проектом. Сегодня появилась свободная минутка — дописал инструмент. Может кому-то пригодиться.  Итак, что умеет этот JSON Viewer:

  1. Загружать JSON-данные:
    • из буфера обмена
    • из файла (с расширениями txt или json)
    • с заданного URL (в т.ч. и с авторизацией по OAuth)
  2. Строить дерево элементов JSON
  3. Копировать в буфер обмена:
    • «Сырой» JSON из текстового редактора
    • Имя отдельной пары
    • Значение пары
    • Пару полностью, т.е. «Ключ : Значение»
  4. Удалять из «сырого» JSON лишние пробелы
  5. Форматировать JSON-объект (Pretty-Print)
  6. Показывать количество дочерних узлов в дереве JSON и размер узла в байтах.

Внешний вид программы следующий:

Json Viewer - главный экран

Json Viewer — главный экран

Вкладка «Главная»

Группа «JSON»

Здесь можно:

  • загрузить данные JSON из буфера обмена (опция по умолчанию на кнопке «Вставить»)
  • загрузить JSON из файла — для этого у кнопки «Вставить» имеется меню
  • загрузить JSON с заданного URL (кнопка «Загрузить с URL»)
  • очистить текстовый редактор
  • скопировать или вырезать выделенный текст из текстового редактора в буфер обмена.

Про загрузку JSON c заданного URL следует сказать немного подробнее. После нажатия на кнопку «Загрузить с URL» появится следующий диалог:

Загрузка JSON с URL

Загрузка JSON с URL

Во второе поле (OAuth Access Token) следует писать только значение ключа, например:

12ccccc34556767asdfg

Если ключ доступа передан в программу, то при загрузке данных будет сформирован HTTP-заголовок следующего вида:

Authorization: OAuth 12ccccc34556767asdfg 

Эту опцию я делал для себя, чтобы можно было грузить данные API Яндекс.Диска, поэтому не стал рассматривать все возможные варианты заголовка и ограничился только необходимым. Однако, если программа вызовет интерес, то можно продумать более менее универсальный алгоритм загрузки.

В остальном загрузка с URL ничем не отличается от загрузки из файла. Если вы загружаете JSON-данные с URL или из файла, то программа сохраняет эти сведения в меню последних загруженных данных:

Последние документы

Последние документы

В последствии вы можете в один клик повторить загрузку JSON-документа из файла или с URL.

Группа «Редактирование»

Здесь вы можете в один клик удалить лишние пробелы и, тогда JSON, представленный на рисунке выше, станет выглядеть вот так:

JSON Viewer - удаление пробелов

JSON Viewer — удаление пробелов

Или же наоборот — отформатировать JSON так, чтобы он был удобочитаемым, то есть вернуть его к вот такому виду:

JSON Viewer - отформатированные данные

JSON Viewer — отформатированные данные

Вкладка «Просмотр»

Если в текстовый редактор были загружены корректные данные, то, перейдя на вкладку «просмотр», можно увидеть дерево JSON:

JSON Viewer - вкладка "Просмотр"

JSON Viewer — вкладка «Просмотр»

В дереве у каждого типа узла своя иконка:

  • Объект — фигурные скобки
  • Массив — квадратные скобки
  • Строка — синяя точка
  • Число — зеленая точка
  • Boolean — желтая точка
  • NULL — красная точка

Выбрав в дереве узел, слева можно увидеть список пар «Имя: Значение». Например, на рисунке выше я выбрал узел объекта — программа показала все пары этого JSON-объекта. Если выбрать узел массива, то список значений будет таким:

Значения элементов массива

Значения элементов массива

Группа «Узел JSON»

Здесь расположена всего одна кнопка «Копировать» с несколькими опциями:

Опции копирования JSON

Опции копирования JSON

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

Группа «Вид»

Меняет внешний вид дерева.

Кнопка «Раскрыть дерево» полностью разворачивает или сворачивает узлы дерева.

Кнопка «Количество элементов» позволяет показывать/скрывать  количество дочерних элементов узла:

Количество дочерних элементов

Количество дочерних элементов

Кнопка «Размер узла» позволяет показывать/скрывать размер узла в байтах:

Размеры узлов

Размеры узлов

Вот, собственно и все возможности — просто, но, в принципе, достаточно.

Чего не стоит ждать от этой версии программы, так это возможности парсить гигантские JSON. Ещё раз — писал программку под свои нужды, то есть работу с относительно небольшими JSON-объектами — до 20-30 Мб. Поэтому могу с уверенностью сказать, что эта версия не потянет JSON размером в 100 Мб и более. В случае интереса к программе можно будет обеспечить и эту возможность, благо сейчас не 2005 год и компонентов для работы с JSON, в том числе и очень большими JSON в Delphi сейчас хватает с избытком.

Для тех, кто заинтересовался — ссылка на скачивание программы для открытия файлов json:

5 1 голос
Рейтинг статьи
уважаемые посетители блога, если Вам понравилась, то, пожалуйста, помогите автору с лечением. Подробности тут.
Подписаться
Уведомить о
4 Комментарий
Межтекстовые Отзывы
Посмотреть все комментарии
Александр
Александр
09/11/2016 20:26

Симпатичный просмотрщик, спасибо!
Не хватает возможности искать и фильтровать. Т.е. например, если дерево большое, то не удобно бродить по нему в поисках какой-то ноды. Аналогично — фильтрация, т.е отображение только тех узлов, которые соответствуют фильтру.

Sergei Kamyshev
27/03/2017 19:24

У меня сервис возвращает данные как в json так и в xml, в итоге через программу нельзя задать Content-Type , по умолчанию приходит xml и не работает :( печалька

Владимир
Владимир
06/05/2018 16:20

На больших объемах json «тупит» (если б не это, я б даже нажал кнопку «поддержкать автора»)
а так нормально, удобнее аналогов