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

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

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

   >   >   > 


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

Пример программы на языке программирования Перфолента.Net:

  • Работа с JSON
    • ЗаписьJSON.пфл


//Программа тестирования объектов работы с JSON
//создана на основе json_writer.os из проекта OneScript
//огромное спасибо ребятам из OneScript!!!!

#ТипСборки КонсольноеПриложение
#ИспользоватьСтандартнуюБиблиотеку

Программа ТестЗаписиДжейсон
    
    Поле Кат тип Строка = ЭтаПрограмма.Каталог    
    
    Процедура Старт
        
        //ок
        ВыводСтроки Тест_Должен_СверитьСтрокуСоСпецСимволами
        
        //ок
        ВыводСтроки Тест_Должен_СверитьСтрокуЭкранированнымиКириллическимиСимволами
        
        //ок
        ВыводСтроки Тест_Должен_СверитьХешСуммуСгенерированнойСтрокиJSON
        
        //ок
        ВыводСтроки Тест_Должен_СверитьХешСуммуСгенерированнойМетодомЗаписатьJSONСтруктуры
        
        //ок
        ВыводСтроки Тест_Должен_СверитьХешСуммуСгенерированнойМетодомЗаписатьJSONСтруктурыСФиксированнымиКоллекциями
        
        
        ВыводСтроки Тест_ДолженЗаписатьСложныйОбъект
        
        
        п="Тесты закончены...."
        ВыводСтроки п
        
        Консоль.Пауза
        
        
    КонецПроцедуры
    
    Функция Тест_ДолженЗаписатьСложныйОбъект() тип Строка
        
        Об=Новый Массив
        Об.Добавить(777.555)
        Об.Добавить('20191231')
        Об.Добавить("Строка текста")
        Об.Добавить(Новый УникальныйИдентификатор)
        
        Запись = Новый ЗаписьJson(Новый ПараметрыЗаписиJSON(,,,, Истина, Истина, Истина, Истина, Истина));
        Запись.ЗаписатьОбъект(Об,,Истина)
        ВыводСтроки Запись.Закрыть()
        
        ВыводСтроки "Теперь Dictionary<Строка,Объект>:"
        
        Об2=Новый System.Collections.Generic.Dictionary<Строка,Объект>
        Об2.Add("стр1",777.555)
        Об2.Add("стр2",'20191231')
        Об2.Add("стр3","Строка текста")
        Об2.Add("стр4",Новый УникальныйИдентификатор)
        
        Запись = Новый ЗаписьJson(Новый ПараметрыЗаписиJSON(,,,, Истина, Истина, Истина, Истина, Истина));
        Запись.ЗаписатьОбъект(Об2,,Истина)
        ВыводСтроки Запись.Закрыть()

        ВыводСтроки "ПараметрыРедактораТекста:"

        ред=Новый ПараметрыРедактораТекста(Новый ПараметрыВыделенияТекста(100,50))
        
        Запись = Новый ЗаписьJson(Новый ПараметрыЗаписиJSON(,,,, Истина, Истина, Истина, Истина, Истина));
        Запись.ЗаписатьОбъект(ред,,Ложь)
        ВыводСтроки Запись.Закрыть()


    КонецФункции
    
    Функция Тест_Должен_СверитьХешСуммуСгенерированнойСтрокиJSON() тип Строка
        
        Запись = Новый ЗаписьJson();
        Запись.УстановитьСтроку();
        Запись.ЗаписатьНачалоОбъекта();
        Запись.ЗаписатьИмяСвойства("firstName");
        Запись.ЗаписатьЗначение("Иван");
        Запись.ЗаписатьИмяСвойства("lastName");
        Запись.ЗаписатьЗначение("""Иванов""");
        
        Запись.ЗаписатьИмяСвойства("address");    
        Запись.ЗаписатьНачалоОбъекта();
        Запись.ЗаписатьИмяСвойства("streetAddress");
        Запись.ЗаписатьЗначение("Московское ш., 101, кв.101");
        Запись.ЗаписатьИмяСвойства("city");
        Запись.ЗаписатьЗначение("Ленинград");
        Запись.ЗаписатьИмяСвойства("postalCode");
        Запись.ЗаписатьЗначение(101101);
        Запись.ЗаписатьИмяСвойства("float");
        Запись.ЗаписатьЗначение(1.54);
        Запись.ЗаписатьИмяСвойства("undefined");
        Запись.ЗаписатьЗначение(Неопределено);
        Запись.ЗаписатьКонецОбъекта();
        
        Запись.ЗаписатьИмяСвойства("phoneNumbers");
        Запись.ЗаписатьНачалоМассива();
        Запись.ЗаписатьЗначение("812 123-1234");
        Запись.ЗаписатьЗначение("916 123-4567");
        Запись.ЗаписатьКонецМассива();
        
        Запись.ЗаписатьКонецОбъекта();
        
        Текст = Запись.Закрыть();
        
        ВыводСтроки Текст
        
        
        Хеширование = Новый ХешированиеДанных(ХешФункция.CRC32);
        Хеширование.Добавить(Текст);    
        
        ВыводСтроки "Хеш="+Хеширование.ХешСумма
        
        б=(Хеширование.ХешСумма= 2627237007б32);
        
        Возврат "СверитьХешСуммуСгенерированнойСтрокиJSON "+?(б,"ОК","!!! ОШИБКА !!!");
        
    КонецФункции
    
    Функция Тест_Должен_СверитьСтрокуЭкранированнымиКириллическимиСимволами() тип Строка
        
        ЗаписьJSON = Новый ЗаписьJSON;
        Параметры = Новый ПараметрыЗаписиJSON(ПереносСтрокJSON.Windows, , , ЭкранированиеСимволовJSON.СимволыВнеASCII);
        
        ЗаписьJSON.УстановитьСтроку(Параметры);
        
        ЗаписатьJSON(ЗаписьJSON, "Символы кириллицы");
        
        Стр=ЗаписьJSON.Закрыть()
        
        ВыводСтроки Стр
        
        б=(Стр= """\u0421\u0438\u043c\u0432\u043e\u043b\u044b \u043a\u0438\u0440\u0438\u043b\u043b\u0438\u0446\u044b""");
        Возврат "СверитьСтрокуЭкранированнымиКириллическимиСимволами "+?(б,"ОК","!!! ОШИБКА !!!");
        
    КонецФункции
    
    Функция Тест_Должен_СверитьСтрокуСоСпецСимволами()  тип Строка
        
        ЗаписьJSON = Новый ЗаписьJSON;
        ЗаписьJSON.УстановитьСтроку();
        
        ЗаписатьJSON(ЗаписьJSON,  Символ(1) + Символ(31));
        
        Стр=ЗаписьJSON.Закрыть()
        
        ВыводСтроки Стр
        
        б=(Стр= """\u0001\u001f""");
        Возврат "СверитьСтрокуСоСпецСимволами "+?(б,"ОК","!!! ОШИБКА !!!");
        
    КонецФункции
    
    Функция Тест_Должен_СверитьХешСуммуСгенерированнойМетодомЗаписатьJSONСтруктурыСФиксированнымиКоллекциями() тип Строка
        
        Запись = Новый ЗаписьJson();
        Запись.УстановитьСтроку();
        
        @Структура = Новый Структура();
        
        МассивОбычный = Новый Массив();
        МассивОбычный.Добавить("1");
        
        ВложенныйМассив = Новый Массив();
        ВложенныйМассив.Добавить("2.1");
        ВложенныйМассив.Добавить("2.2");
        
        //?????????????
        //ФиксМассив = Новый ФиксированныйМассив(ВложенныйМассив);
        ФиксМассив = Новый Массив(ВложенныйМассив);
        
        МассивОбычный.Добавить(ФиксМассив);
        
        @Структура.Вставить("МассивОбычный", МассивОбычный);
        
        соответствие = Новый Соответствие();
        соответствие.Вставить("ЭлементСоответствия", "ЗначениеСоовтетствия");
        
        //?????????????
        //ФиксированноеСоответствие = Новый ФиксированноеСоответствие(соответствие);
        ФиксированноеСоответствие = Новый Соответствие(соответствие);
        
        @Структура.Вставить("ФиксированноеСоответствие", ФиксированноеСоответствие);
        
        //?????????????
        //ФиксированнаяСтруктура = Новый ФиксированнаяСтруктура(@Структура);
        ФиксированнаяСтруктура = Новый Структура(@Структура);
        
        ЗаписатьJSON(Запись, ФиксированнаяСтруктура);    
        
        Текст = Запись.Закрыть();
        
        //ВыводСтроки Текст
        
        Хеширование = Новый ХешированиеДанных(ХешФункция.CRC32);
        Хеширование.Добавить(Текст);    

        //ВыводСтроки "Хеш="+Хеширование.ХешСумма
        
        б=(Хеширование.ХешСумма= 3499253905б32);
        Возврат "СверитьХешСуммуСгенерированнойМетодомЗаписатьJSONСтруктурыСФиксированнымиКоллекциями "+?(б,"ОК","!!! ОШИБКА !!!");
        
    КонецФункции
    
    Функция Тест_Должен_СверитьХешСуммуСгенерированнойМетодомЗаписатьJSONСтруктуры() тип Строка
        
        Текст = Новый ТекстовыйДокумент();
        Текст.Прочитать(Кат+"json-mock_struct.json", КодировкаТекста.UTF8);
        
        Чтение = Новый ЧтениеJSON;
        Чтение.УстановитьСтроку(Текст.ПолучитьТекст());
        @Структура = ПрочитатьJSON(Чтение);
        
        Запись = Новый ЗаписьJson();
        Запись.УстановитьСтроку();    
        ЗаписатьJSON(Запись, @Структура);    
        
        СтрТекст = Запись.Закрыть();
        
        ВыводСтроки СтрТекст
        
        Хеширование = Новый ХешированиеДанных(ХешФункция.CRC32);
        Хеширование.Добавить(СтрТекст);    

        ВыводСтроки "Хеш="+Хеширование.ХешСумма
        
        б=(Хеширование.ХешСумма= 3352482152б32);
        
        Возврат "СверитьХешСуммуСгенерированнойМетодомЗаписать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
       Все новости