OneScript icon indicating copy to clipboard operation
OneScript copied to clipboard

Метод ПрочитатьJSON добавляет в возвращаемых данных (в массиве) закоментированные строки

Open 240596448 opened this issue 2 years ago • 3 comments

Если в массиве json есть закомментированная строка, то она попадает в структуру данных в виде элемента массива.

Пример воспроизведения прикреплен image

Проверил на 1.1.1, 1.4.0, 1.8.4

testjson.zip

Листинги

[
    {
        "NAME": "",
        "Method": "",
        "PATH": ""
    },
    {
        "NAME": "",
        // "Method": "",
        "PATH": ""
    }
    // },
    // {
    //     "NAME"   : ""
    //     "Method" : "",
    //     "PATH"   : ""
]
ЧтениеТекста = Новый ЧтениеТекста("test.json", КодировкаТекста.UTF8NoBOM);
Текст = ЧтениеТекста.Прочитать();
ЧтениеТекста.Закрыть();

ЧтениеJSON = Новый ЧтениеJSON();
ЧтениеJSON.УстановитьСтроку(Текст);
Настройка = ПрочитатьJSON(ЧтениеJSON);
ЧтениеJSON.Закрыть();
Для Каждого Стр Из Настройка Цикл
	Сообщить(Стр);
КонецЦикла;

Обсуждение https://t.me/oscript_library/98144

240596448 avatar Oct 27 '23 16:10 240596448

Не только в массиве:

Текст = "
|{
|  'test': //fail
|  'pass'
|}";
ЧтениеJSON = Новый ЧтениеJSON();
ЧтениеJSON.УстановитьСтроку(Текст);
Результат = ПрочитатьJSON(ЧтениеJSON);
ЧтениеJSON.Закрыть();
Сообщить(Результат.test);

fail вместо "pass"

Mr-Rm avatar Oct 27 '23 18:10 Mr-Rm

Я не знаю, какое должно быть правильное поведение. Комментариев в синтаксисе Json вообще не предусмотрено....

EvilBeaver avatar Oct 28 '23 19:10 EvilBeaver

Комментариев в синтаксисе Json вообще не предусмотрено....

Вопрос дискуссионный. С одной стороны именно таким он и создавался, а с другой формат вырос до одно- и многострочных комментариев.

Я не знаю, какое должно быть правильное поведение.

В чем имеено логическая ловушка? Нужны однострочные комментарии. В многострочные не лезть. Обработка комментариев построчная.

240596448 avatar Oct 28 '23 20:10 240596448