
Я JavaScript разработчик и последнее время занимаюсь разработкой приложений на Ext JS. Для наглядности интерфейсов, иногда необходимо вбить в них JSON данные. Сперва я писал небольшие скрипты на PHP для генерации необходимых данных, но вскоре это стало забирать все больше времени и я отказался от этого подхода. Потом я начал создавать *.json файлы с данными, но зачастую мне требовалось наличие в них полей с уникальным ID и, по возможности, уникальными данными для красоты. Правда, задавать уникальные значения для полей, особенно в массиве из 100+ объектов занятие не благодарное.
И я решил немного автоматизировать данный процесс.
Я часто пользуюсь сервисом Json Parser Online. Он крайне полезен при разборе ответа от сервера и форматирует JSON в красивое дерево. Но, увы, генерировать его не может. Вдохновленный этим проектом и уставший от рутинной возни я за пару дней написал небольшой сервис Json Generator для генерации JSON.
Реализация
По внешнему виду он подобен Json Parser — уж больно удобным для меня оказался такой дизайн. Сервис написан на чистом JavaScript. Используется только одна сторонняя библиотечка — JSON-js от Дугласа Крокфорда. На странице есть два поля: поле шаблона клонируемого объекта и поле для сгенерированных данных, которые представляются в виде дерева. В поле шаблона JSON должен быть валидным. Сгенерированные данные заключаются в этот объект:
{
"id": 1,
"jsonrpc": "2.0",
"total": 5, //длина сгенерированного массива
"result": [
//сгенерированный массив
]
}
Скрипт понимает несколько переменных:
- int $incr (счет с 1)
- int $randInt(a,b) (случайное целое число в диапазоне от a до b)
- boolean $bool (случайный true/false)
- string $firstName/$lastName (случайное русское имя/фамилия. На данный момент их по 100 подбираемых в случайном порядке)
- string $company (случайное имя компании из 100)
- string $phone (случайный российский номер телефона)
- string $email (случайный адрес почты. Генерируется в зависимости от значений полей объекта, содержащих $name и $company)
- string $date (случайная дата)
- array имя поля (количеством элементов массива управляет переменная repeat:int count)
Шаблон можно дополнить любыми полями с любым содержанием — они останутся неизменными. Генератор понимает любой уровень вложенности объектов — для всех полей вложенных объектов, содержащих переменные, будут сгенерированы новые данные.
Панель инструментов по середине состоит из:
- поле для ввода длины генерируемого массива
- кнопки старта генерации
- кнопки сброса полей в изначальный вид
- кнопки для выделения текста в поле с новыми данными
P.S.
Проект пока сыроват, но мне он хорошо экономит время. В будущем планирую его улучшать и добавлять новые плюшки. Надеюсь, что кто-то найдет этот сервис для себя полезным. Спасибо за внимание!
UPD
Добавил возможность генерации массивов объектов. Их размер контролирует переменная repeat:int count. Все поля в объекте массива могут содержать и другие переменные. Пример можно увидеть в новом шаблоне. Большое спасибо taliban за подсказку :)