Onescript и файловые пути в .JSON файлах


#1

Наступил на грабли с чтением файловых путей из .JSON файлаов под windows:
оказалось, что парсер преобразует весь текст с учетом

// Маскирование служебных символов.
Результат = СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(Значение, 
					"\",			"\\"),			// x5c
					"/",			"\/"),			// x2f
					Символ(008),	"\b"),			// x08
					Символы.Таб,	"\t"), 			// x09
					Символы.ПС,		"\n"),			// x0a
					Символы.ПФ,		"\f"),			// x0c
					Символы.ВК,		"\r"),			// x0d
					"""",			"\""");			// x22

Естественно скрипт run-behavior-check-session.os с github и другие не работали в связи с неправильной передачей путей из скрипта в обработку.
Выход - использовал большие буквы. Прошло…


#2

Не понял. можно пример исходной строки, которая не правильно распарсилась (односкриптом? самим скриптом?) ?


#3

VBParams837UF.json
Скрин
На скрине в птях \v выделены серым
Есть подозрение, что связано с кодировкой .json


#4

Я использовал этот же файл, пробрасывая его сразу в параметр запуска 1с. никаких проблем с преобразованием не было.
Подсветка пытается раскрасить строку как регулярку.


#5

Я заметил, что происходит это после редактирования .json в FARe .\t розпарсивается как табуляция


#6

В таком случае рекомендую использовать полноценные текстовые редакторы)


#7

уже перешел ;), вчера пол дня разбирался с граблями на ровном месте…


#8

Сделал скрипт для тестирования run-check.os и Main.json поместил в папку \temp и выполнил команду oscript .\temp\run-check.os .\temp\Main.json из папки вышестоящей по отношению к \temp
Преобразование путей из Main.json к .\temp происходит в виде . emp
Сам .json в кодировке UTF8.


#9

Рекомендую создать обсуждение на https://github.com/EvilBeaver/oscript-library/issues
и призвать туда EvilBeaver и (возможно) kuntashov

P.S. Я что-то не сразу понял, что имеется в виду вот эта шикарная строка https://github.com/EvilBeaver/oscript-library/blame/develop/src/json/src/json.os#L680


#10

По-моему это просто порт вот этой обработки: http://infostart.ru/public/119601/


#11

Создал обсуждение github.com/EvilBeaver/oscript-library/issues/91


#12

В 1С есть Платформенный метод - это 3 вариант.

Начиная с версии 8.3.6.1977 есть метод ЧтениеJSON
Так вот встречая в строке символ \ он отваливается с ошибкой:
_непредвиденный символ при чтении json _
конструкция c двумя подряд \ проходит как положено.
@pumbaEO прав. нужно просто использовать ее и не отходить от стандарта.
Хотя быстрее и более читаемо
Так что получается не БАГ а ФИЧА :slight_smile:


#13

имхо, надо вместо \ использовать / для разделителя путей (винда это принимает и линукс тоже).