Парсер имеет недостаток, он не проводит валидацию JSON-строки, поэтому если строка "битая" или неправильная, то результат непредсказуем.
В смысле — в результате работы парсинга будет возвращена какая-нибудь лабуда.
JSON и UnJSON в 1С (версия от 27/11/2009)
Разработка - Инструментарий разработчика
Что нового: в строках можно использовать, как двойные, так и одинарные кавычки и исправлен маленький косячок при парсинге объекта.
Скачать файл
ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.
Наименование | По подписке [?] | Купить один файл | |
---|---|---|---|
JSON and UnJSON (27/11/2009)
.epf 14,30Kb
509
|
509 | Скачать (1 SM) | Купить за 1 850 руб. |
См. также
Инструментарий разработчика Роли и права Запросы СКД Программист Руководитель проекта Платформа 1С v8.3 Управляемые формы Запросы Система компоновки данных Платные (руб)
Инструменты для разработчиков 1С 8.3: Infostart Toolkit. Автоматизация и ускорение разработки на управляемых формах. Легкость работы с 1С.
15500 руб.
02.09.2020 175463 976 403
Инструментарий разработчика Чистка данных Свертка базы Инструменты администратора БД Системный администратор Программист Руководитель проекта Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 Россия Платные (руб)
Инструмент представляет собой обработку для проведения свёртки или обрезки баз данных. Работает на ЛЮБЫХ конфигурациях (УТ, БП, ERP, УНФ, КА и т.д.). Поддерживаются серверные и файловые базы, управляемые и обычные формы. Может выполнять свертку сразу нескольких баз данных и выполнять их автоматически без непосредственного участия пользователя. Решение в Реестре отечественного ПО
8400 руб.
20.08.2024 17012 119 59
Пакетная печать Печатные формы Инструментарий разработчика Программист Платформа 1С v8.3 Запросы 1С:Зарплата и кадры бюджетного учреждения 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 Платные (руб)
Инструмент, позволяющий абсолютно по-новому взглянуть на процесс разработки печатных форм. Благодаря конструктору можно значительно снизить затраты времени на разработку печатных форм, повысить качество и "прозрачность" разработки, а также навести порядок в многообразии корпоративных печатных форм.
22200 руб.
06.10.2023 18187 49 19
Инструментарий разработчика Программист Платформа 1С v8.3 Платные (руб)
Инструмент для написания и отладки кода в режиме «1С:Предприятие». Представляет собой консоль кода с возможностью пошаговой отладки, просмотра значений переменных любых типов, использования процедур и функций, просмотра стека вызовов, вычисления произвольных выражений на встроенном языке в контексте точки останова, синтаксического контроля и остановки по ошибке. В консоли используется удобный редактор кода с подсветкой, контекстной подсказкой, возможностью вызова конструкторов запроса и форматной строки.
9360 руб.
17.05.2024 28316 98 48
Инструменты администратора БД Инструментарий разработчика Роли и права Программист Платформа 1С v8.3 1C:Бухгалтерия Россия Платные (руб)
Расширение позволяет без изменения кода конфигурации выполнять проверки при вводе данных, скрывать от пользователя недоступные ему данные, выполнять код в обработчиках. Не изменяет данные конфигурации, легко устанавливается практически на любую конфигурацию на управляемых формах.
15000 руб.
10.11.2023 12441 49 33
SALE! %
Инструментарий разработчика Инструменты администратора БД Системный администратор Программист Платформа 1С v8.3 Управляемые формы 1C:ERP 1С:УТ 1С:ДО 1С:Бухгалтерия 3.0 1С:ERP. Управление холдингом 1С:Зарплата и Управление Персоналом 3.x 1С:Управление нашей фирмой 3.0 1С:Управление торговлей 11 Россия Платные (руб)
Универсальный инструмент программиста для администрирования конфигураций. Сборник наиболее часто используемых обработок под единым интерфейсом.
4800
3840 руб.
14.01.2013 192418 1155 0
Инструментарий разработчика Программист 8.3.14 Россия Платные (руб)
Расширение для конфигурации “Конвертация данных 3”. Добавляет подсветку синтаксиса, детальную контекстную подсказку, глобальный поиск по коду.
20000 руб.
07.10.2021 18411 7 32
Инструментарий разработчика Платформа 1С v8.3 1C:Бухгалтерия 1С:ERP Управление предприятием 2 Платные (руб)
Разработка Конструктор автоматизированных рабочих мест "Конструктор АРМ" реализована в виде расширения и является универсальным инструментом для создания АРМ любой сложности в пользовательском режиме.
3600 руб.
27.12.2024 1507 2 0
//Экранирует недопустимые символы
Функция Экранировать(Стр)
Х=СтрЗаменить(Стр,"""","\""");
//Х=СтрЗаменить(Х,"'","\'"); //??? Не уверен в этой строке. Кто нибудь может подтвердить или опровергнуть нужность этой строки.
Х=СтрЗаменить(Х,"\","\\");
Х=СтрЗаменить(Х,"/","\/"); //Тут тоже не уверен, но пока оставлю.
Х=СтрЗаменить(Х,Символ(8),"\\b");
Х=СтрЗаменить(Х,Символы.ПФ,"\\f");
Х=СтрЗаменить(Х,Символы.ПС,"\\n");
Х=СтрЗаменить(Х,Символы.ВК,"\\r");
Х=СтрЗаменить(Х,Символы.Таб,"\\t");
Х=СтрЗаменить(Х,Символы.ВТаб,"\\v");
Возврат Х
КонецФункции
ПоказатьТекст = Новый ТекстовыйДокумент;
Текст.ДобавитьСтроку(JSONСтрока);
Текст.Записать(ИмяФайлаЗапроса,КодировкаТекста.UTF8);
Запрос.УстановитьТелоИзДвоичныхДанных(Новый ДвоичныеДанные(ИмяФайлаЗапроса));
Ответ = Соединение.ОтправитьДляОбработки(Запрос);
//
// Как записать файл в кодировке UTF-8 без BOM
Функция ЗаписатьФайлВформате_UTF8_без_BOM(текст,полноеИмяФайла) Экспорт
// записываем в файл с символами BOM в начале файле
ТекстовыйФайлUTF8_Bom = Новый ТекстовыйДокумент();
ТекстовыйФайлUTF8_Bom.ДобавитьСтроку(текст);
ТекстовыйФайлUTF8_Bom.Записать(полноеИмяФайла,"UTF-8");
// открываем файл и считываем символы после символов BOM
Данные = Новый ДвоичныеДанные(полноеИмяФайла);
Строка64=Base64Строка(Данные);
Строка64=Прав(Строка64,СтрДлина(Строка64)-4);
ДанныеНаЗапись=Base64Значение(Строка64);
ДанныеНаЗапись.Записать(полноеИмяФайла); // записываем
КонецФункции
{
"access_token" : "ya29.AHES6ZRmi4n2MK9hBTtD0Uu5W2E8Syxs_lHg",
"token_type" : "Bearer",
"expires_in" : 3600,
"id_token" : "eyJhbGciOiJSUzI1NiJ9.eyJpc3MiOiJhY2N-DqKlZ9camBK_oF5rPfstZ3Ei89nsUQ",
"refresh_token" : "1/_KwyqNDsjz9pGzBSqF2RDpJ2PKHYX2BgYIjIQMY0nCA"
}
Так вот параметр refresh_token после JSON -> UnJSON -> JSON получается таким:
"refresh_token":"1\/_KwyqNDsjz9pGzBSqF2RDpJ2PKHYX2BgYIjIQMY0nCA"
Разбираться не стал. Пока интересен только UnJSON, а он правильно отработал.
Спасибо огромное за труд!
попытался воспользоваться JSON-сериализацией.
Есть 2 момента.
1. Сериализация двойных кавычек в строке у вас переводится в \\" (т.е. с лишним обратным слешем)
2. Думаю, что сериализацию типа Ссылка лучше сделать в виде идентификатора. Сейчас Ссылка сериализуется в Наименование.
Спасибо
{"jsonrpc":"2.0","errors":[],"notifications":[],"result":{"Time":"2014-08-10T17:06:39+04:00","RequestID":"53e76e52af632c4c0f000000","Format":"Combined","Data":[{"Gate":"Production","GDS":"AmadeusWS","Office":null,"RecommendationID":"D308D0C5-EA60-44B8-A346-544CB8870341","RecommendationGDSID":"1","ValidatingAirline":"SU","ValidatingAirlines":"SU","LastTicketDate":1403985600,"Refundable":"No","ETicket":true,"Itineraries":[{"ItineraryID":0,"Variants":[{"VariantID":"DB6713B2-2ED6-491B-8DCB-F8F53968D84E","VariantGDSID":"1","Duration":80
здесь как раз два разных ID в верхнем регистре.
В платформе 8.3.6 будет встроенный JSON!
Осталось дождаться выхода платформы.
Оптимизация делалась для веб-сайта
На данных из примерно 5 тысяч записей таблицы значений перевод в XML уменьшил время обработки со 120 секунд (2 минуты) до 4 секунд.
В платформе 8.3.6 сериализация в json то же будет средствами платформы. Я полагаю, что скорость будет не хуже, а может быть, даже лучше чем при сериализации в XML.
Х=СтрЗаменить(Стр,"""","\""");
и потом
Х=СтрЗаменить(Х,"\","\\");
Это специально чтобы внутри строки символ " превращался в \\" а не в \"
Исправил
Х=СтрЗаменить(Х,"\","\\");
//Х=СтрЗаменить(Х,"'","\'"); //убрать точно
Х=СтрЗаменить(Стр,"""","\""");
А так, одна функция подобная функция делает все быстрее и проще.
Функция UnJSONШтатно(СтрJSON) Экспорт
ЧтениеJSON = Новый ЧтениеJSON;
ЧтениеJSON.УстановитьСтроку(СтрJSON);
Значение = ПрочитатьJSON(ЧтениеJSON, Истина);
ЧтениеJSON.Закрыть();
Возврат Значение
КонецФункции
ПоказатьФункция JSON(Структура) Экспорт
ЗаписьJSON=Новый ЗаписьJSON;
ЗаписьJSON.УстановитьСтроку();
ЗаписатьJSON(ЗаписьJSON,Структура,Новый НастройкиСериализацииJSON,"ПреобразованиеJSON",JSON);
Возврат ЗаписьJSON.Закрыть()
КонецФункции
Функция ПреобразованиеJSON(Свойство, Значение, ДополнительныеПараметры, Отказ) Экспорт
Если Значение=Null Тогда
Возврат Неопределено
ИначеЕсли ТипЗнч(Значение)=Тип("ТаблицаЗначений") Тогда
Колонки=Значение.Колонки;
Массив=Новый Массив;
Для Каждого СтрокаТЗ Из Значение Цикл
Структура=Новый Структура;
Для Каждого Колонка Из Колонки Цикл
Структура.Вставить(Колонка.Имя,СтрокаТЗ[Колонка.Имя])
КонецЦикла;
Массив.Добавить(Структура);
КонецЦикла;
Возврат Массив
Иначе
Возврат Строка(Значение)
КонецЕсли;
Отказ=Истина
КонецФункции
Функция UnJSON(СтрокаJSON) Экспорт
ЧтениеJSON=Новый ЧтениеJSON;
ЧтениеJSON.УстановитьСтроку(СтрокаJSON);
Значение=ПрочитатьJSON(ЧтениеJSON);
ЧтениеJSON.Закрыть();
Возврат Значение
КонецФункции
ПоказатьРейтинг: 193
Для получения уведомлений о новых публикациях автора подключите телеграм бот: Инфостарт бот
№ 61194
Создание 20.11.09 13:28
Обновление 27.11.09 00:00
Просмотры 51505
Загрузки 509
Рейтинг
91
Комментарии 53
Код открыт Не указано
Рубрики Инструментарий разработчика
Кому Программист
Тип файла Внешняя обработка (ert,epf)
Платформа Платформа 1С v8.3
Конфигурация 1C:Бухгалтерия
Операционная система Не имеет значения
Страна Россия
Отрасль Не имеет значения
Налоги Не имеет значения
Вид учета Не имеет значения
Доступ к файлу Абонемент ($m)
