Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> 1С:JSON , JSON парсер и сериализатор c полной поддержкой стандарта          
Vofka Подменю пользователя
сообщение 24.10.13, 22:10
Сообщение #1

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13958
Из: Киев
Спасибо сказали: 4524 раз
Рейтинг: 3647.7



JSON парсер и сериализатор c полной поддержкой стандарта, широким набором сериализуемых типов и продвинутым синтаксический анализатором.

Особенности

  • Стандартный – полная поддержка [необходимо зарегистрироваться для просмотра ссылки] JSON;
  • Альтернативный – направлен на применение в проектах подразумевающих постоянный двусторонний обмен данными и требующих повышенную скорость парсинга, минимизацию пересылаемых пакетов и однозначную идентификацию ссылочных типов во входящих данных.


Независимо от режима работы сериализатор, по требованию, позволяет автоматически передавать не только уникальный идентификатор ссылки, но и ее представление, а парсер в свою очередь, анализируя входные данные, опускает представления ссылок, не включая их в результирующий набор данных.

При необходимости, сериализатор может маскировать кириллические символы современных алфавитов славянских языков “АБВГҐДЂЃЕЀЁЄЖЗЅИЍІЇЙЈКЛЉМНЊОПРСТЋЌУЎФХЦЧЏШЩЪЫЬЭЮЯ”.

Поддерживаются все среды исполнения с ограничением сериализуемых типов. Используется кроссплатформенный код.

Альтернативный режим

  • Не поддерживается форматирование, как во входящих, так и в исходящих данных;
  • Сериализация ссылочных типов в строковое служебное представление.


Приятности

Парсер
  • Устойчивость к некорректным данным и не подверженность injection атакам;
  • Продвинутый синтаксический анализатор (указывает место и тип ошибки в данных);
  • Поддержка форматирования во входящих данных (только стандартный режим);
  • Безопасный разбор форматирования - незамаскированные символы форматирования в строковых значениях не будут утеряны;
  • Поддержка строк в одинарных и в двойных кавычках;
  • Автоматическое приведение объекта к структуре или соответствию в зависимости от имен свойств;
  • Автоматическое преобразование к типу Дата строки вида “9999-99-99T99:99:99Z”;
  • Автоматическое преобразование к типу УникальныйИдентификатор строки вида “xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx”;
  • Автоматического определение режима (стандартного или альтернативного) входящих данных;
  • Автоматического определение необходимости отсечения представления ссылок;
  • Однозначная идентификация ссылок (только альтернативный режим).


Сериализатор

  • Поддержка форматирования исходящих данных (только стандартный режим);
  • Широкий состав сериализуемых типов данных, в том числе ссылок;
  • Автоматическое приведение значений ключей соответствий к строковому представлению 1C;
  • Автоматическое преобразование неподдерживаемых типов к строке;
  • Нечувствительность к локализации.


Неприятности

  • Нестандартно форматированный код (Alt+Shift+F в помощь) на гране читаемости;
  • Сериализатор ориентирован на средние-крупные пакеты данных.


Сериализуемые типы

  • Неопределено;
  • Null;
  • Примитивные типы (все);
  • Универсальные коллекции значений (все);
  • УникальныйИдентификатор;
  • ЛюбаяСсылка;
  • Запрос;
  • РезультатЗапроса;
  • ВыборкаИзРезультатаЗапроса;
  • ПостроительЗапроса;
  • ПостроительОтчета;
  • ДанныеФормыКоллекция (только 8.2);
  • ДанныеФормыСтруктураСКоллекцией (только 8.2);
  • ДанныеФормыДерево (только 8.2)
  • ДвоичныеДанные;
  • Картинка;
  • ХранилищеЗначения.


Порядок сериализации типов

  • Неопределено – сериализуется как Null;
  • Null – согласно стандарту;
  • Примитивные типы – согласно стандарту;
  • Массивы и COMSafeArray – массив, согласно стандарту:
    [ Значение, ... ]

  • Структуры и соответствия – объект, согласно стандарту;
    { Ключ:Значение, ... }

  • СписокЗначений – массив объектов с тремя свойствами “Значение”, “Представление” и “Пометка”;
    [ { "Значение":Значение, "Представление":Представление, "Пометка":Пометка }, ... ]

  • КлючИЗначение – объект с двумя свойствами “Ключ” и “Значение”;
    { "Ключ":Ключ, "Значение":Значение }

  • ТаблицаЗначений – массив объектов:
    [ { Колонка:Значение, ... }, ... ]

  • ДеревоЗначений – массив объектов с обязательным свойством “Строки”:
    [ { Колонка:Значение, ... , "Строки":[ { Колонка:Значение, ... , "Строки":[ ... ] } , ... ] }, ... ]

  • УникальныйИдентификатор – приведение к строке вида “xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx”;
  • ЛюбаяСсылка:
    – Стандартный режим – получение уникального идентификатора ссылки и его сериализация;
    – Альтернативный режим – приведение к строке служебного вида “¦ref¦ ... ¦”.

    При сериализации ссылок в режиме автоматически передачи не только сериализованного значения ссылки, но и ее представления. Каждая ссылка передается как объект с двумя свойствами “Ссылка” и “Представление”.
    { "Ссылка":Ссылка, "Представление":Представление }

  • Запрос – автоматически выполняется и сериализуется как таблица значений;
  • РезультатЗапроса – сериализуется как таблица значений;
  • ВыборкаИзРезультатаЗапроса – сериализуется как структура значений текущей запись результата запроса;
  • ПостроительЗапроса – автоматически выполняется и сериализуется как таблица значений;
  • ПостроительОтчета – автоматически выполняется и сериализуется как таблица значений;
  • ДанныеФормыКоллекция – сериализуется как таблица значений;
  • ДанныеФормыСтруктураСКоллекцией – сериализуется как таблица значений;
  • ДанныеФормыДерево – сериализуется как дерево значений;
  • ДвоичныеДанные – кодируется по алгоритму base64 и сериализуется как строка;
  • Картинка – автоматически преобразуется и сериализуется как двоичные данные;
  • ХранилищеЗначения – автоматически извлекается сохраненное значение и сериализуется в зависимости от типа извлеченного значения.


Рекомендация

При работе с проектами, в исходящих строковых данных которых не гарантируется отсутствие символов из диапазонов:

[0x007f, 0x009f], 0x00ad, [0x0600, 0x0604], 0x070f, [0x17b4, 0x17b5],
[0x200c, 0x200f], [0x2028, 0x202f] [0x2060, 0x206f], 0xfeff, [0xfff0, 0xffff]


рекомендуется не отключать настройку полного маскирования символов.

Производительность

Производительность парсера исключительно зависит от набора входящих данных, а также от наличия форматирования. Наихудшим вариантом является форматированный массив чисел, наилучшим – неформатированный массив строк.
Intel Core 2 Duo T5870 @ 2GHz – форматированный массив со всеми приблизительно равномерно встречающимися типами данных:
Парсер: 35 Кбайт/с.
Сериализатор: 165 Кбайт/с.


Скачать: Прикрепленный файл  1c_json.zip ( 79,05 килобайт ) Кол-во скачиваний: 775


[необходимо зарегистрироваться для просмотра ссылки]


Farit Подменю пользователя
сообщение 31.10.14, 7:56
Сообщение #2

Молчаливый
*
Группа: Пользователи
Сообщений: 1
Спасибо сказали: 0 раз
Рейтинг: 0

Здраствуйте, файл в архиве просит пароль, можно пароль кинуть в личку?

Vofka Подменю пользователя
сообщение 31.10.14, 9:12
Сообщение #3

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13958
Из: Киев
Спасибо сказали: 4524 раз
Рейтинг: 3647.7

Пароль кинуть в личку нельзя. Пароль можно прочитать в правилах.

Спасибо сказали: AlexHummer,

ChunLee Подменю пользователя
сообщение 15.08.16, 6:52
Сообщение #4

Молчаливый
*
Группа: Пользователи
Сообщений: 1
Спасибо сказали: 0 раз
Рейтинг: 0

Vofka @ 31.10.14, 9:12 *,
так как получить заветный пароль?

Vofka Подменю пользователя
сообщение 15.08.16, 7:58
Сообщение #5

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13958
Из: Киев
Спасибо сказали: 4524 раз
Рейтинг: 3647.7

ChunLee, сообщение выше прочитать не предлагать?

Спасибо сказали: AlexHummer,

just86 Подменю пользователя
сообщение 24.05.18, 9:11
Сообщение #6

Молчаливый
*
Группа: Пользователи
Сообщений: 4
Спасибо сказали: 0 раз
Рейтинг: 0

Как можно прочитать json в структуру, если в json свойство задано числом?

Petre Подменю пользователя
сообщение 24.05.18, 12:03
Сообщение #7

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2907
Из: Київ, Україна
Спасибо сказали: 1148 раз
Рейтинг: 1230.2

just86 @ Today, 9:11 * ,
Читайте в соответствие.


Signature
Допрацьовую:
- "Бухгалтерія для України 2.1";
- "Альфа-Авто: Автосалон+Автосервіс+Автозапчастини, українська версія".

Kalashnikoffroug... Подменю пользователя
сообщение 11.04.24, 15:00
Сообщение #8

Молчаливый
*
Группа: Пользователи
Сообщений: 1
Спасибо сказали: 0 раз
Рейтинг: 0

Vofka @ 15.08.16, 8:58 * ,
Прочитал "Правила и условия публикации сообщений на форуме" пароль не нашел. Подскажите где его найти?

andr_andrey Подменю пользователя
сообщение 11.04.24, 15:46
Сообщение #9

Почти ветеран
Иконка группы
Группа: Местный
Сообщений: 628
Спасибо сказали: 167 раз
Рейтинг: 132.1

Цитата(Kalashnikoffrouge @ 11.04.24, 16:00) *
Подскажите где его найти?

В правилах, які ви не прочитали.


Signature
#define private public
enum BOOL { FALSE, TRUE, FILENOTFOUND } is made my day

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 20.06.24, 10:11
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!