ЧтениеJSON.ТекущаяСтрока

Свойства · CurrentLine

Тип: Число, Неопределено. Указывает на позицию сразу после прочитанного значения. Например, перед чтением первого элемента - 0, после чтения первого элемента -1 .

Полное описание, параметры и ограничения

ЧтениеJSON.ТекущаяСтрока (JSONReader.CurrentLine)

ЧтениеJSON (JSONReader)

ТекущаяСтрока (CurrentLine)

Доступен, начиная с версии 8.3.6.

Использование:
Только чтение.
Описание:
Тип: Число, Неопределено.
Указывает на позицию сразу после прочитанного значения.
Например, перед чтением первого элемента - 0, после чтения первого элемента -1 .
Доступность:

Тонкий клиент, мобильный клиент, сервер, толстый клиент, внешнее соединение, мобильное приложение (клиент), мобильное приложение (сервер), мобильный автономный сервер.

Использование в версии:

Доступен, начиная с версии 8.3.6.

Методическая информация

Практические примеры

Посмотреть типы, значения и позиции при последовательном чтении JSON

Не загружаем структуру целиком: последовательно читаем токены и считаем имена свойств. Null, число и строка различаются по типу токена.

Где и как запускать

Учебная база: создайте серверный общий модуль УчебныеЗадачи (флаг Сервер). Код без директив вставьте в тело процедуры ВыполнитьПример() Экспорт. Вызовите её из серверного обработчика команды учебной обработки. Не запускайте в рабочей базе.

Подготовка

  1. Все исходные JSON-строки и значения заданы в коде. Файлы, токены доступа, интернет и рабочая база не нужны.

  2. Не подставляйте в упражнения ответы реального API с персональными данными. Сначала проверяйте неизменённый учебный набор.


Текст = "{""name"":""Книга"",""quantity"":3,""enabled"":true,""tags"":[""paper""],""note"":null}";
Чтение = Новый ЧтениеJSON;
Чтение.УстановитьСтроку(Текст);
ЧислоИмен = 0;
Попытка
    Пока Чтение.Прочитать() Цикл
        Сообщить(СтрШаблон("Строка %1; позиция %2; тип %3; значение %4",
            Чтение.ТекущаяСтрока, Чтение.ТекущаяПозиция,
            Чтение.ТипТекущегоЗначения, Чтение.ТекущееЗначение));
        Если Чтение.ТипТекущегоЗначения = ТипЗначенияJSON.ИмяСвойства Тогда
            ЧислоИмен = ЧислоИмен + 1;
        КонецЕсли;
    КонецЦикла;
Исключение
    Чтение.Закрыть();
    ВызватьИсключение;
КонецПопытки;
Чтение.Закрыть();
Если ЧислоИмен <> 5 Тогда
    ВызватьИсключение "В учебном объекте ожидалось пять имён свойств";
КонецЕсли;
Сообщить(ЧислоИмен);

Разбор по шагам

  1. Прочитать перемещает состояние на очередной JSON-токен; Ложь означает конец входа.

  2. Имя свойства и его значение — разные токены. Начало и конец массива/объекта тоже встречаются при чтении.

  3. ТипТекущегоЗначения отличает строку от числа, даже если отображаемые тексты похожи.

  4. ТекущаяСтрока и ТекущаяПозиция помогают ориентироваться в документе. Это не индекс элемента массива данных.

Как проверить результат

  1. Подсчитано 5 имён: name, quantity, enabled, tags, note.

  2. Для quantity значение числовое 3; для элемента tags значение строковое paper.

  3. Перенесите свойства на разные строки корректного JSON: содержимое не меняется, номера текущих строк меняются.

Ожидаемый результат

Получена карта последовательности токенов и мест в исходном тексте для изучения потокового JSON API.

На что обратить внимание

  1. ТекущееЗначение не следует читать как готовый объект или массив в момент токена начала контейнера.

  2. Позиции относятся к тексту JSON, не к байтам UTF-8 на диске. Не используйте их как файловые смещения.

Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.

Не хотите разбираться сами?

Адаптируем это решение под вашу базу. Оценка бесплатно.

Оставить задачу

1С, 1С:Предприятие — товарные знаки ООО «1С». Сайт не является официальным представительством фирмы «1С» и не аффилирован с ней.