Заметки из Зазеркалья

30.05.2022

Улучшение работы с JSON

Данная статья является анонсом новой функциональности.
Не рекомендуется использовать содержание данной статьи для освоения новой функциональности.
Полное описание новой функциональности будет приведено в документации к соответствующей версии.
Полный список изменений в новой версии приводится в файле v8Update.htm.

Планируется в версии 8.3.23

Пробовать

Всё большее количество веб-сервисов переходит на обмен сообщениями в формате JSON. Чтобы облегчить труд прикладных разработчиков мы решили сделать работу с JSON максимально простой и удобной.

Сейчас в глобальном контексте есть 4 метода чтения и записи JSON: ЗаписатьJSON, ЗаписатьДатуJSON, ПрочитатьJSON, ПрочитатьДатуJSON. Функциональность этих методов очень богатая и, по имеющейся у нас информации, она избыточна для большинства задач прикладных разработчиков. А ещё – вышеупомянутые методы недоступны в веб-клиенте. При этом многие задачи интеграции требуется решать именно из веб-клиента.

В версии 8.3.23 мы добавим в глобальный контекст два новых метода: ЗаписатьЗначениеJSON (WriteJSONValue) и ПрочитатьЗначениеJSON (ReadJSONValue). Функциональность новых методов более «легкая» по сравнению с существующими и её должно хватить для большинства задач интеграции. Так, если старые методы ПрочитатьJSON и ЗаписатьJSON работают через объекты ЧтениеJSON и ЗаписьJSON соответственно, то синтаксис новых методов гораздо проще:

  • ЗаписатьЗначениеJSON(<Значение>) возвращает строку.

  • ПрочитатьЗначениеJSON(<Строка>) возвращает Структура, Массив, Число, Строка, Булево, Неопределено.

Оба методы будут доступны везде: тонкий клиент, веб-клиент, мобильный клиент, сервер, толстый клиент, внешнее соединение, мобильное приложение (клиент), мобильное приложение (сервер), мобильный автономный сервер. Мы не объявляем предыдущие 4 метода устаревшими, но рекомендуем использовать новые методы везде, где это возможно; это, в частности, позволит писать универсальный код, исполняемый на всех компонентах системы.

Приведем пример. Предположим, нам нужно для передачи в веб-сервис сериализовать в строку JSON структуру вида:

{

       "Фамилия": "Иванов",

       "Имя": "Иван",

       "Отчество": "Иванович",

       "Телефоны": [

             "8-999-999-99-91",

             "8-999-999-99-92"

       ]

}

В старом варианте код будет такой:


&НаСервере
Функция ПолучитьJSONНаСервере()
    Структура = Новый Структура;
    Структура.Вставить("Фамилия", "Иванов");
    Структура.Вставить("Имя", "Иван");
    Структура.Вставить("Отчество", "Иванович");

    Телефоны = Новый Массив;
    Телефоны.Добавить("8-999-999-99-91");
    Телефоны.Добавить("8-999-999-99-92");
    Структура.Вставить("Телефоны", Телефоны);

    //получение строки JSON
    ЗаписьJSON = Новый ЗаписьJSON;
    ЗаписьJSON.УстановитьСтроку();
    ЗаписатьJSON(ЗаписьJSON, Структура);
    Возврат ЗаписьJSON.Закрыть();
КонецФункции
С использованием новых функций код может исполняться и на веб-клиенте, а сама процедура получения строки JSON будет короче – одна строка вместо четырех:

&НаКлиенте
Функция ЗаписатьЗначениеJSONКлиент()
    Структура = Новый Структура;
    Структура.Вставить("Фамилия", "Иванов");
    Структура.Вставить("Имя", "Иван");
    Структура.Вставить("Отчество", "Иванович");

    Телефоны = Новый Массив;
    Телефоны.Добавить("8-999-999-99-91");
    Телефоны.Добавить("8-999-999-99-92");
    Структура.Вставить("Телефоны", Телефоны);

    //получение строки JSON
    Возврат ЗаписатьЗначениеJSON(Структура);
КонецФункции

Мы рассчитываем, что новые методы облегчат решение многих прикладных задач по интеграции.



Теги: 8.3.23  JSON  разработка 

Рассказать друзьям: