По умолчанию чтение данных методом ПрочитатьJSON() выполняется в структуру. Но некоторые внешние системы могут формировать имена свойств, которые, с точки зрения «1С:Предприятия», содержат недопустимые символы. Например, свойство может называться "user.first" или "user.last". С точки зрения платформы это недопустимое значение для строкового ключа (т. к. имя свойства не может содержать точку).
Например, JSON-документ содержит соответствие, имена свойств которого включают пробел и другие недопустимые символы (листинг 1.22).
Листинг 1.22. Содержимое JSON-документа
{
"Контрагент №2": "ОАО Алмаз",
"Объем Продаж": 6000000,
"Мобильный тел.": "+79998887766",
"Поставщик": true
}
При стандартном чтении такого документа в структуру будет получена ошибка (рис. 1.3).
Рис. 1.3. Ошибка при чтении в структуру JSON-документа
В этом случае надо читать данные в соответствие, потому что ключи (имена свойств) соответствия могут быть любыми. Для этого вторым параметром в метод ПрочитатьJSON(ЧтениеJSON, Истина) надо передать истину (листинг 1.23).
Листинг 1.23. Пример десериализации соответствия из JSON-документа
&НаСервереБезКонтекста
Процедура РаботаССоответствиемНаСервере()
// Создать объект чтения и открыть файл, из которого будет выполняться чтение.
Чтение = Новый ЧтениеJSON;
Чтение.ОткрытьФайл("c:\temp\Serialisation_8.json");
// Выполнить чтение данных в соответствие Данные с помощью объекта чтения (Чтение).
Данные = ПрочитатьJSON(Чтение, Истина);
// Данные = ПрочитатьJSON(Чтение);
// Завершить работу с файлом.
Чтение.Закрыть();
// Вывести результат чтения в сообщение.
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = "Контрагент: " + Данные["Контрагент №2"] + ", Объем продаж: " + Данные["Объем Продаж"] +
", Поставщик: " + Данные["Поставщик"] + ", Телефон моб.: " + Данные["Мобильный тел."];
Сообщение.Сообщить();
КонецПроцедуры
Результат чтения JSON-документа, содержимое которого показано в листинге 1.22, будет выглядеть следующим образом (рис. 1.4).
Рис. 1.4. Чтение данных из JSON-документа в соответствие