Парсер имеет недостаток, он не проводит валидацию JSON-строки, поэтому если строка "битая" или неправильная, то результат непредсказуем.
В смысле — в результате работы парсинга будет возвращена какая-нибудь лабуда.
JSON и UnJSON в 1С (версия от 27/11/2009)
Разработка - Инструментарий разработчика
Что нового: в строках можно использовать, как двойные, так и одинарные кавычки и исправлен маленький косячок при парсинге объекта.
Скачать исходный код
Наименование | Файл | Версия | Размер | |||
---|---|---|---|---|---|---|
JSON and UnJSON (27/11/2009)
.epf 14,30Kb
507
|
.epf | 14,30Kb | 507 | Скачать |
См. также
Infostart Toolkit: Инструменты разработчика 1С 8.3 на управляемых формах
Инструментарий разработчика Роли и права Запросы СКД Платформа 1С v8.3 Управляемые формы Запросы Система компоновки данных Конфигурации 1cv8 Платные (руб)
Набор инструментов программиста и специалиста 1С для всех конфигураций на управляемых формах. В состав входят инструменты: Консоль запросов, Консоль СКД, Консоль кода, Редактор объекта, Анализ прав доступа, Метаданные, Поиск ссылок, Сравнение объектов, Все функции, Подписки на события и др. Редактор запросов и кода с раскраской и контекстной подсказкой. Доработанный конструктор запросов тонкого клиента. Продукт хорошо оптимизирован и обладает самым широким функционалом среди всех инструментов, представленных на рынке.
10000 руб.
02.09.2020 126705 687 389
Infostart PrintWizard - создание и редактирование печатных форм в 1С 8.3
Пакетная печать Печатные формы Инструментарий разработчика Платформа 1С v8.3 Запросы 1С:Зарплата и кадры бюджетного учреждения 1С:Конвертация данных 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 Платные (руб)
Инструмент, позволяющий абсолютно по-новому взглянуть на процесс разработки печатных форм. Благодаря конструктору можно значительно снизить затраты времени на разработку печатных форм, повысить качество и "прозрачность" разработки, а также навести порядок в многообразии корпоративных печатных форм.
18000 руб.
06.10.2023 8354 24 6
Infostart УДиФ: Управление данными и формами 1С
Инструменты администратора БД Инструментарий разработчика Роли и права Платформа 1С v8.3 Конфигурации 1cv8 Россия Платные (руб)
Расширение позволяет без изменения кода конфигурации выполнять проверки при вводе данных, скрывать от пользователя недоступные ему данные, выполнять код в обработчиках. Не изменяет данные конфигурации, легко устанавливается практически на любую конфигурацию на управляемых формах.
10000 руб.
10.11.2023 4709 12 2
SALE! %
PowerTools
Инструментарий разработчика Инструменты администратора БД Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Россия Платные (руб)
Универсальный инструмент программиста для администрирования конфигураций. Сборник наиболее часто используемых обработок под единым интерфейсом.
3600
2280 руб.
14.01.2013 178899 1085 0
Бустер Конвертации данных 3 (Infostart Toolkit)
Инструментарий разработчика 8.3.14 1С:Конвертация данных Россия Платные (руб)
Расширение для конфигурации “Конвертация данных 3”. Добавляет подсветку синтаксиса, детальную контекстную подсказку, глобальный поиск по коду.
15000 руб.
07.10.2021 15089 3 12
Многопоточность. Универсальный «Менеджер потоков» 2.1
Инструментарий разработчика Платформа 1С v8.3 Конфигурации 1cv8 Россия Платные (руб)
Восстановление партий или взаиморасчетов, расчет зарплаты, пакетное формирование документов или отчетов - теперь все это стало доступнее. * Есть желание повысить скорость работы медленных алгоритмов! Но... * Нет времени думать о реализации многопоточности? * о запуске и остановке потоков? * о поддержании потоков в рабочем состоянии? * о передаче данных в потоки и как получить ответ из потока? * об организации последовательности? Тогда ЭТО - то что надо!!!
5000 руб.
07.02.2018 99821 239 97
1С HTML Шаблоны / HTML Templates
Инструментарий разработчика Платформа 1С v8.3 Конфигурации 1cv8 Платные (руб)
Быстрая и удобная обработка для работы с шаблонами HTML. Позволяет легко и быстро формировать код HTML.
2040 руб.
27.12.2017 28408 4 10
[ЕХТ] Фреймворк для Расширений 1С
Инструментарий разработчика Платформа 1С v8.3 Управляемые формы Платные (руб)
"Фреймворк для Расширений 1С" это универсальное и многофункциональное решение, упрощающее разработку и поддержку создаваемых Расширений. Поставляется в виде комплекта из нескольких Расширений с открытым исходным кодом. Работает в любых Конфигурациях в режиме Управляемого приложения с режимом совместимости 8.3.12 и выше без необходимости внесения изменений в Конфигурацию.
3000 руб.
27.08.2019 18505 6 8
//Экранирует недопустимые символы
Функция Экранировать(Стр)
Х=СтрЗаменить(Стр,"""","\""");
//Х=СтрЗаменить(Х,"'","\'"); //??? Не уверен в этой строке. Кто нибудь может подтвердить или опровергнуть нужность этой строки.
Х=СтрЗаменить(Х,"\","\\");
Х=СтрЗаменить(Х,"/","\/"); //Тут тоже не уверен, но пока оставлю.
Х=СтрЗаменить(Х,Символ(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.Закрыть();
Возврат Значение
КонецФункции
ПоказатьРейтинг: 191
Для получения уведомлений о новых публикациях автора подключите телеграм бот: Инфостарт бот
№ 61194
Создание 20.11.09 13:28
Обновление 27.11.09 00:00
Просмотры 50613
Загрузки 507
Рейтинг
91
Комментарии 53
Код открыт Не указано
Рубрики Инструментарий разработчика
Кому Программист
Тип файла Внешняя обработка (ert,epf)
Платформа Платформа 1С v8.3
Конфигурация Конфигурации 1cv8
Операционная система Не имеет значения
Страна Россия
Отрасль Не имеет значения
Налоги Не имеет значения
Вид учета Не имеет значения
Доступ к файлу Абонемент ($m)