ReadParams

Чтение параметров из json файла

Чтение из файла

Читает параметры из файла json и возвращает соответствие параметров. Параметры читаются рекурсивно, т.е. если в файле указана структура, в ней структура, а уже в ней п1 = 100, то в соответствии будет прочитанныеПараметры["п1"] = 100

Пример из тестов 1. Чтение файла

записьТекста = Новый ЗаписьТекста(файлПараметров);
ЗаписьТекста.ЗаписатьСтроку( "{""парам.Число"": 100, ""парам.Строка"": ""100"", ""парам.Булево"": true}" );
ЗаписьТекста.Закрыть();

ошибкиЧтения = Неопределено;

прочитанныеПараметры = ЧтениеПараметров.Прочитать( файлПараметров, ошибкиЧтения );

// ТипЗнч(прочитанныеПараметры) = Тип("Соответствие");
// прочитанныеПараметры.Количество() = 3;

// ТипЗнч(ошибкиЧтения) = Тип("Соответствие");
// ошибкиЧтения.Количество() = 0;

// прочитанныеПараметры["парам.Число"] = 100;
// прочитанныеПараметры["парам.Строка"] = "100";
// прочитанныеПараметры["парам.Булево"] = Истина;
	

Так же на вход можно подавать файл (Новый файл()) массив файлов, массив путей к файлам.

Если ничего не указывать в качестве пути, то будет прочитан файл param_os.json из текущего каталога.

Пример из тестов 2. Чтение файла из текущего каталога

файлПараметров = ОбъединитьПути( ТекущийКаталог(), "param_os.json");

записьТекста = Новый ЗаписьТекста(файлПараметров);
ЗаписьТекста.ЗаписатьСтроку( "{""парам.Число"": 100, ""парам.Строка"": ""100"", ""парам.Булево"": true}" );
ЗаписьТекста.Закрыть();

прочитанныеПараметры = ЧтениеПараметров.Прочитать();

Ссылки в переданном файле на другие файлы к чтению

Если указать в файле параметров имя параметра, которое начинается с ReadFile, а в значении путь к файлу (в том числе относительно этого файла), то будут прочитан так же и указанный файл.

Пример из теста 3. Чтение файла с ссылками на другие файлы

путь2 = ПутьВЗначениеJSON( ОбъединитьПути(".", "testParam2.json") );
путь3 = ПутьВЗначениеJSON( ОбъединитьПути(".", "testParam3.json") );

записьТекста = Новый ЗаписьТекста(файлПараметров1);
ЗаписьТекста.ЗаписатьСтроку( "{""парам.Число"": 1, ""парам.Строка"": ""1"", ""парам.Булево"": true, ""ReadFile"": """ + путь2 + """}" );
ЗаписьТекста.Закрыть();

записьТекста = Новый ЗаписьТекста(файлПараметров2);
ЗаписьТекста.ЗаписатьСтроку( "{""парам.Число2"": 2, ""парам.Строка2"": ""2"", ""парам.Булево2"": false, ""ReadFile"": """ + путь3 + """}" );
ЗаписьТекста.Закрыть();

записьТекста = Новый ЗаписьТекста(файлПараметров3);
ЗаписьТекста.ЗаписатьСтроку( "{""парам.Число"": 3, ""парам.Строка"": ""3""}" );
ЗаписьТекста.Закрыть();

прочитанныеПараметры = ЧтениеПараметров.Прочитать( файлПараметров1 );

// прочитанныеПараметры["парам.Число"] = 3;
// прочитанныеПараметры["парам.Строка"] = "3";
// прочитанныеПараметры["парам.Булево"] = Истина;

// прочитанныеПараметры["парам.Число2"] = 2;
// прочитанныеПараметры["парам.Строка2"] = "2";
// прочитанныеПараметры["парам.Булево2"] = Ложь;

// прочитанныеПараметры["ReadFile"] = ОбъединитьПути(".", "testParam3.json");

Подстановки в параметрах

Если для какого-либо параметра в качестве значения используется шаблон %ИмяПараметра%, то в прочитанных параметрах будет предпринята попытка подменить этот шаблон на соответствующее значение

Пример из тестов 4. Использование подстановки

записьТекста = Новый ЗаписьТекста(файлПараметров);
ЗаписьТекста.ЗаписатьСтроку( "{""парам.Число"": 100,
	|""парам.Подстановка1"": ""999+%парам.Число%+%парам.Число%"",
	|""парам.Подстановка2"": ""0+%парам.Подстановка1%+%парам.Число%""
	|}" );
ЗаписьТекста.Закрыть();

прочитанныеПараметры = ЧтениеПараметров.Прочитать( файлПараметров );
	
// прочитанныеПараметры["парам.Число"] = 100;
// прочитанныеПараметры["парам.Подстановка1"] = "999+100+100";
// прочитанныеПараметры["парам.Подстановка2"]  "0+999+100+100+100";	

Обработка ошибок

Модуль не генерирует исключений и не выводит никаких сообщений. Если переданный файл не удалось прочитать или распарсить, то ошибка об этом вернется вторым параметром ошибкиЧтения. Это соответствие, где ключ - путь к файлу, значение - описание ошибки.

Примеры использования

ОСкрипты для деплоя и копирования базы данных и они же на github

Доступные версии пакета

0.2.0
Изменен: 02.01.2019 19:48:29
0.1.1
Изменен: 02.01.2019 19:48:29
В разработке

Репозиторий

https://github.com/oscript-library/ReadParams

Актуальная версия

ReadParams-0.2.0