так вот при выполнении кода:
ЧтениеJSON = Новый ЧтениеJSON;
ЧтениеJSON.ОткрытьФайл(ПутьКФайлу);
Ответ=ПрочитатьJSON(ЧтениеJSON);
Выдет ошибку:
{ВнешняяОбработка.ЭкспериментыJSON.Форма.Форма.Форма(67)}: Ошибка при вызове метода контекста (ПрочитатьJSON)
Ответ=ПрочитатьJSON(ЧтениеJSON);
по причине:
Недопустимое имя свойства: '800' для чтения JSON в объект Структура
Ожидается, что другие стандарты будут относиться к этому, строго придерживаясь текстового формата JSON, в то время как накладывая ограничения на различные детали кодирования. Такие стандарты могут потребовать определенного поведения. JSON сам не указывает никакого поведения.
Далее в стандарте (стр. 2) спецификация объекта JSON:
Структура объекта представлена в виде пары фигурных фигурных скобок, окружающих нулевые или более пары имен/значений. Имя - это строка. Каждому имени соответствует один идентификатор двоеточия, отделяющий имя от значения. Один токен разделяет значение из следующего имени.
(6) Формат данных соответствует стандарту JSON. Имя - это строка. А строка в JSON - это символы, заключенные в кавычки. Отсутствует ограничение, что первый символ строки должен быть буквой. Структура представлена пятью парами имен/значений. Все имена - это строки. И 1С прочитает этот JSON путем Ответ=ПрочитатьJSON(ЧтениеJSON, Истина);
Что-то мне подсказывает, что такие обозначения свойств JSON объекта не приветствуются в 1С.
Как, спрашивается, обращаться к ним после парсинга в структуру? "СтруктураДанных.800"?
Вот оно на ранних подступах и выдает ошибку.
А то, что ругается на последнюю запись - это нормально. JSON парсится с хвоста.
(3) После чтения в соответствие к ним нужно обращаться как к соответствию - Ответ["distribution"]["0"]. Либо Ответ.Получить("distribution").Получить("200")
Ошибку выдает, потому что идет попытка прочитать в структуру, а такой JSON можно прочитать только в соответствие.
Тут вот какая "петрушка". Получается как с программами переводчиками: переводишь слово на английский, и тут же полученное значение пытаешься перевести обратно на русский и получаешь совершенно другой результат.
Выгружаю пакет XDTO в JSON и пытаюсь его тут же прочитать в структуру и появляется ошибка "недопустимое имя свойства #value". Я понимаю, что это означает и, в результате, вынужден "читать" JSON в соответствие, но вот правильно ли это?
Запись пакета XDTO в JSON:
Запись = Новый ЗаписьJSON;
Запись.ПроверятьСтруктуру=Истина;
ПараметрыЗаписи = Новый ПараметрыЗаписиJSON(ПереносСтрокJSON.Unix);
Запись.УстановитьСтроку(ПараметрыЗаписи);
ФабрикаXDTO.ЗаписатьJSON(Запись, МойОбъектXDTO);
ДанныеJSON = Запись.Закрыть();
И ту же пытаюсь прочитать его в структуру
обЧтениеJSON = Новый ЧтениеJSON;
обЧтениеJSON.УстановитьСтроку(ДанныеJSON );
стСтруктураСхемы = ПрочитатьJSON(обЧтениеJSON);
и тут же получаем сообщение об ошибке "недопустимое имя свойства #value". Ну, все, поворчал, пошел работать дальше.