Парсер имеет недостаток, он не проводит валидацию JSON-строки, поэтому если строка "битая" или неправильная, то результат непредсказуем.
В смысле — в результате работы парсинга будет возвращена какая-нибудь лабуда.
JSON и UnJSON в 1С (версия от 27/11/2009)
Разработка - Инструментарий разработчика
Что нового: в строках можно использовать, как двойные, так и одинарные кавычки и исправлен маленький косячок при парсинге объекта.
Скачать файл
ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.
Наименование | По подписке [?] | Купить один файл | |
---|---|---|---|
JSON and UnJSON (27/11/2009)
.epf 14,30Kb
509
|
509 | Скачать (1 SM) | Купить за 1 850 руб. |
См. также
SALE! 15%
Инструментарий разработчика Роли и права Запросы СКД Программист Платформа 1С v8.3 Управляемые формы Запросы Система компоновки данных Конфигурации 1cv8 Платные (руб)
Набор инструментов программиста и специалиста 1С для всех конфигураций на управляемых формах. В состав входят инструменты: Консоль запросов, Консоль СКД, Консоль кода, Редактор объекта, Анализ прав доступа, Метаданные, Поиск ссылок, Сравнение объектов, Все функции, Подписки на события и др. Редактор запросов и кода с раскраской и контекстной подсказкой. Доработанный конструктор запросов тонкого клиента. Продукт хорошо оптимизирован и обладает самым широким функционалом среди всех инструментов, представленных на рынке.
10000 руб.
02.09.2020 159453 874 399
SALE! 15%
Инструментарий разработчика Чистка данных Свертка базы Инструменты администратора БД Системный администратор Программист Руководитель проекта Платформа 1С v8.3 Конфигурации 1cv8 1С:Управление торговлей 10 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 Россия Платные (руб)
Инструмент представляет собой обработку для проведения свёртки или обрезки баз данных. Работает на ЛЮБЫХ конфигурациях (УТ, БП, ERP и т.д.). Поддерживаются управляемые и обычные формы. Может выполнять свертку сразу нескольких баз данных и выполнять их автоматически без непосредственного участия пользователя.
8400
7140 руб.
20.08.2024 7777 57 22
Инструментарий разработчика Программист Платформа 1С v8.3 Конфигурации 1cv8 Платные (руб)
Инструмент для написания и отладки кода в режиме «1С:Предприятие». Представляет собой консоль кода с возможностью пошаговой отладки, просмотра значений переменных любых типов, использования процедур и функций, просмотра стека вызовов, вычисления произвольных выражений на встроенном языке в контексте точки останова, синтаксического контроля и остановки по ошибке. В консоли используется удобный редактор кода с подсветкой, контекстной подсказкой, возможностью вызова конструкторов запроса и форматной строки.
9360 руб.
17.05.2024 23439 68 45
SALE! 15%
Инструменты администратора БД Инструментарий разработчика Роли и права Программист Платформа 1С v8.3 Конфигурации 1cv8 Россия Платные (руб)
Расширение позволяет без изменения кода конфигурации выполнять проверки при вводе данных, скрывать от пользователя недоступные ему данные, выполнять код в обработчиках. Не изменяет данные конфигурации, легко устанавливается практически на любую конфигурацию на управляемых формах.
10000
8500 руб.
10.11.2023 10431 36 24
SALE! 15%
Пакетная печать Печатные формы Инструментарий разработчика Программист Платформа 1С v8.3 Запросы 1С:Зарплата и кадры бюджетного учреждения 1С:Конвертация данных 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 Платные (руб)
Инструмент, позволяющий абсолютно по-новому взглянуть на процесс разработки печатных форм. Благодаря конструктору можно значительно снизить затраты времени на разработку печатных форм, повысить качество и "прозрачность" разработки, а также навести порядок в многообразии корпоративных печатных форм.
22200
19980 руб.
06.10.2023 15403 35 7
SALE! 35%
Инструментарий разработчика Инструменты администратора БД Системный администратор Программист Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Россия Платные (руб)
Универсальный инструмент программиста для администрирования конфигураций. Сборник наиболее часто используемых обработок под единым интерфейсом.
4800
3120 руб.
14.01.2013 187988 1140 0
SALE! 15%
Инструментарий разработчика Программист 8.3.14 1С:Конвертация данных Россия Платные (руб)
Расширение для конфигурации “Конвертация данных 3”. Добавляет подсветку синтаксиса, детальную контекстную подсказку, глобальный поиск по коду.
15000
12750 руб.
07.10.2021 17303 6 32
Инструментарий разработчика Программист Платные (руб)
Менеджер конфигураций 1С — альтернативный стартер информационных баз 1С:Предприятие.
1800 руб.
21.02.2023 7696 8 35
//Экранирует недопустимые символы
Функция Экранировать(Стр)
Х=СтрЗаменить(Стр,"""","\""");
//Х=СтрЗаменить(Х,"'","\'"); //??? Не уверен в этой строке. Кто нибудь может подтвердить или опровергнуть нужность этой строки.
Х=СтрЗаменить(Х,"\","\\");
Х=СтрЗаменить(Х,"/","\/"); //Тут тоже не уверен, но пока оставлю.
Х=СтрЗаменить(Х,Символ(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
Просмотры 51185
Загрузки 509
Рейтинг
91
Комментарии 53
Код открыт Не указано
Рубрики Инструментарий разработчика
Кому Программист
Тип файла Внешняя обработка (ert,epf)
Платформа Платформа 1С v8.3
Конфигурация Конфигурации 1cv8
Операционная система Не имеет значения
Страна Россия
Отрасль Не имеет значения
Налоги Не имеет значения
Вид учета Не имеет значения
Доступ к файлу Абонемент ($m)