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

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  разработка