Язык программирования Перфолента.Net - Официальный сайт

 Язык программирования Перфолента.Net - Официальный сайт.

Поиск   
Главная :: О проекте :: Контакты :: Обратная связь :: Благодарности :: ВходГость

   >   >   > 


Примеры по стандартной библиотеке

Пример программы на языке программирования Перфолента.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(Чтение, КакСоответствие);
        
        Возврат Результат;
        
    КонецФункции
    
КонецПрограммы


К началу статьи


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

Перейти в раздел:
Примеры
  Поддержи проект!

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

  Новости:
      07.06.2025 Небольшие дополнения к документации на сайте - описание атрибута поля &Атомарное
      09.05.2025 На сайте опубликован релиз 0.4.16.0_SE дистрибутива языка программирования Перфолента.Net
      27.04.2025 Дополнена статья про циклы
      04.01.2025 Опубликован новый релиз дистрибутива языка программирования Перфолента.Net версии 0.4.15.0_CE
      23.09.2024 Опубликована новая статья: "Конструируем класс. Делегаты."
      30.08.2024 Опубликован новый релиз дистрибутива языка программирования Перфолента.Net версии 0.4.14.0
      24.05.2024 Обновлён справочный раздел сайта
      01.07.2023 Новая версия 0.4.13.0 языка программирования Перфолента.Net
       Все новости