Примеры по стандартной библиотеке
Пример программы на языке программирования Перфолента.Net:
- Работа с JSON
- ЧтениеJSON.пфл
//Программа тестирования объектов работы с JSON
//создана на основе json_reader.os из проекта OneScript
//огромное спасибо ребятам из OneScript!!!!
#ТипСборки КонсольноеПриложение
#ИспользоватьСтандартнуюБиблиотеку
Программа ТестЧтениеДжейсон
Поле Кат тип Строка = ЭтаПрограмма.Каталог
Процедура Старт
//ок
ВыводСтроки Тест_Должен_СверитьСвойствоСДвойнымиКавычками
//ок
ВыводСтроки Тест_Должен_СверитьХешСуммуРезультатаПарсингаJSON
//ок
ВыводСтроки Тест_Должен_СверитьХешСуммуРезультатаПарсингаJSONВСтруктуру
//ок
ВыводСтроки Тест_Должен_СверитьХешСуммуРезультатаПарсингаJSONМассива
п="Тесты закончены...."
ВыводСтроки п
Консоль.Пауза
КонецПроцедуры
//ок
Функция Тест_Должен_СверитьСвойствоСДвойнымиКавычками() тип Строка
СтруктураДанных = ПолучитьСтруктуруДанных(Кат+"json-mock_struct.json");
б= СтруктураДанных.lastName="""Иванов"""
Возврат "СверитьСвойствоСДвойнымиКавычками "+?(б,"ОК","!!! ОШИБКА !!!");
КонецФункции
Функция Тест_Должен_СверитьХешСуммуРезультатаПарсингаJSON() тип Строка
СтруктураДанных = ПолучитьСтруктуруДанных(Кат+"json-mock.json", Истина);
б= РассчитатьХешСумму(СтруктураДанных) = 2373486544б32
Возврат "СверитьХешСуммуРезультатаПарсингаJSON "+?(б,"ОК","!!! ОШИБКА !!!");
КонецФункции
Функция Тест_Должен_СверитьХешСуммуРезультатаПарсингаJSONВСтруктуру() тип Строка
СтруктураДанных = ПолучитьСтруктуруДанных(Кат+"json-mock_struct.json", Ложь);
б= РассчитатьХешСумму(СтруктураДанных)= 1357333964б32
Возврат "СверитьХешСуммуРезультатаПарсингаJSONВСтруктуру "+?(б,"ОК","!!! ОШИБКА !!!");
КонецФункции
Функция Тест_Должен_СверитьХешСуммуРезультатаПарсингаJSONМассива() тип Строка
СтруктураДанных = ПолучитьСтруктуруДанных(Кат+"json-mock_array.json", Истина);
б= РассчитатьХешСумму(СтруктураДанных)= 3633637665б32
Возврат "СверитьХешСуммуРезультатаПарсингаJSONМассива "+?(б,"ОК","!!! ОШИБКА !!!");
КонецФункции
Функция ЗначениеВСтроку(Значение тип Объект, Уровень тип Число = 0) тип Строка
Текст = "";
Отступы = "";
Для Счетчик = 1 По Уровень Цикл
Отступы = Отступы + Символы.Таб;
КонецЦикла;
Если ТипЗнч(Значение) = Тип("Массив") Тогда
Для Каждого Элемент Из Значение Цикл
//Если ТипЗнч(Элемент) = Тип("Булево") Тогда
// ВыводСтроки ("ЕстьБул!!! "+Элемент);
//КонецЕсли;
Если ТипЗнч(Элемент) = Тип("Структура") ИЛИ ТипЗнч(Элемент) = Тип("Соответствие") ИЛИ ТипЗнч(Элемент) = Тип("Массив") Тогда
Текст = Текст + ЗначениеВСтроку(Элемент, Уровень + 1);
Иначе
Текст = Текст + Отступы + ?(Элемент <> Неопределено, Элемент, "Undefined") + Символы.ПС;
КонецЕсли;
КонецЦикла;
Иначе
Для Каждого ТекСтрока Из Значение Цикл
//Если ТипЗнч(ТекСтрока.Значение) = Тип("Булево") Тогда
// ВыводСтроки ("ЕстьБул2!!! "+ТекСтрока.Значение);
//КонецЕсли;
Если ТипЗнч(ТекСтрока.Значение) = Тип("Структура") ИЛИ ТипЗнч(ТекСтрока.Значение) = Тип("Соответствие") ИЛИ ТипЗнч(ТекСтрока.Значение) = Тип("Массив") Тогда
Текст = Текст + Отступы + ТекСтрока.Ключ + ":" + Символы.ПС + ЗначениеВСтроку(ТекСтрока.Значение, Уровень + 1);
Иначе
Текст = Текст + Отступы + ТекСтрока.Ключ + ":" + ?(ТекСтрока.Значение <> Неопределено, ТекСтрока.Значение, "Undefined") + Символы.ПС;
КонецЕсли;
КонецЦикла;
КонецЕсли;
Возврат Текст;
КонецФункции
Функция РассчитатьХешСумму(СтруктураДанных тип Объект) тип Бит32
Текст = ЗначениеВСтроку(СтруктураДанных);
//ВыводСтроки Текст
//ВыводСтроки ("лев="+Лев(Текст,2)+"***");
//ВыводСтроки ("прав="+Прав(Текст,2)+"***");
//ВыводСтроки ("true="+true);
//
//ВыводСтроки СтрДлина(Текст)
//Сумма=0;
//Для Инд=1 По СтрДлина(Текст) Цикл
// Сумма=Сумма+КодСимвола(Сред(Текст,Инд,1));
//КонецЦикла;
//ВыводСтроки Сумма
Хеширование = Новый ХешированиеДанных(ХешФункция.CRC32);
Хеширование.Добавить(Текст);
Сум=Бит32(Хеширование.ХешСумма)
//ВыводСтроки "Хеш="+Сум
Возврат Сум;
КонецФункции
Функция ПолучитьСтруктуруДанных(ПутьКФайлу тип Строка, КакСоответствие тип Булево = Ложь) тип Объект
Текст = Новый ТекстовыйДокумент();
Текст.Прочитать(ПутьКФайлу, КодировкаТекста.UTF8);
Чтение = Новый ЧтениеJSON;
Чтение.УстановитьСтроку(Текст.ПолучитьТекст());
Результат = ПрочитатьJSON(Чтение, КакСоответствие);
Возврат Результат;
КонецФункции
КонецПрограммы

Вернуться в раздел:
Примеры по стандартной библиотеке
Перейти в раздел:
Примеры