Примеры по стандартной библиотеке
Пример программы на языке программирования Перфолента.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Структуры "+?(б,"ОК","!!! ОШИБКА !!!");
КонецФункции
КонецПрограммы

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