Имя: Пароль:
1C
1С v8
Чтение json встроенными методами сериализованного элемента справочника
0 just86
 
03.08.17
15:42
есть http сервис, который возвращает json вида:

{
#type: "jcfg:CatalogObject.КакойтоСправочник",
#value: {
IsFolder: false,
Ref: "eb04c6b2-fdb7-11e6-8046-000c29123d1d",
DeletionMark: false,
Owner: {
#type: "jcfg:CatalogRef.КакойтоСправочник2",
#value: "644ee8c2-f814-11e6-8046-000c29123d1d"
},
Parent: "00000000-0000-0000-0000-000000000000",
Code: "000000000001",
Description: "Описание",
ПолнНаименование: "ПолнНаименование",
Исполнитель: "00000000-0000-0000-0000-000000000000",
КПКВ: "КПКВ",
Цель: "00000000-0000-0000-0000-000000000000",
Ид77: "",
Распорядитель: "00000000-0000-0000-0000-000000000000",
Бюджет: "888b8034-d7e5-11e6-98e4-000c29123d1d",
ЗаконОснование: "00000000-0000-0000-0000-000000000000",
Корзина: 0,
ЭтоОбъектСтроительства: false,
ПлановыйЭлементКФК: "00000000-0000-0000-0000-000000000000",
НеДействующий: false,
флНеПечатать: false,
Задача: "eb04c6b4-fdb7-11e6-8046-000c29123d1d",
ИдМинФин: "",
флНеПечатать2: false,
флНеПечатать3: false,
флНеПечатать4: false,
флНеПечатать5: false,
Уровень: 0
}
}

При попытке чтения сего текста через
ЧтениеJSON = Новый ЧтениеJSON;
ЧтениеJSON.ОткрытьФайл(ИмяФайла);
РезультатJSON = ПрочитатьJSON(ЧтениеJSON);
Получаю ошибку чтения Недопустимое имя Свойства: "#type 'для чтения JSON в объект Структура.

а http://v8.1c.ru/o7/201501json/index.htm говорит что так и надо читать.
Собственно вопрос - можно ли прочитать такой json не заменяя #?
1 just86
 
03.08.17
15:48
чтоб быть точным:

{
  "#type": "jcfg:CatalogObject.КакойтоСправочник",
  "#value": {
   "IsFolder": false,
   "Ref": "eb04c6b2-fdb7-11e6-8046-000c29123d1d",
   "DeletionMark": false,
   "Owner": {
    "#type": "jcfg:CatalogRef.КакойтоСправочник",
    "#value": "644ee8c2-f814-11e6-8046-000c29123d1d"
   },
   "Parent": "00000000-0000-0000-0000-000000000000",
   "Code": "000000000001",
   "Description": "Описание",
   "ПолнНаименование": "ПолнНаименование",
   "Исполнитель": "00000000-0000-0000-0000-000000000000",
   "КПКВ": "КПКВ",
   "Цель": "00000000-0000-0000-0000-000000000000",
   "Ид77": "",
   "Распорядитель": "00000000-0000-0000-0000-000000000000",
   "Бюджет": "888b8034-d7e5-11e6-98e4-000c29123d1d",
   "ЗаконОснование": "00000000-0000-0000-0000-000000000000",
   "Корзина": 0,
   "ЭтоОбъектСтроительства": false,
   "ПлановыйЭлементКФК": "00000000-0000-0000-0000-000000000000",
   "НеДействующий": false,
   "флНеПечатать": false,
   "Задача": "eb04c6b4-fdb7-11e6-8046-000c29123d1d",
   "ИдМинФин": "",
   "флНеПечатать2": false,
   "флНеПечатать3": false,
   "флНеПечатать4": false,
   "флНеПечатать5": false,
   "Уровень": 0
  }
}
2 Вафель
 
03.08.17
15:50
ты хочешь прям объект получить?
3 Вафель
 
03.08.17
15:50
так его нужно через сериализатор читать
4 just86
 
03.08.17
15:51
(2) можно и объект, только я ничего не могу получить ибо сразу в ошибку вываливается.
(3) а подробнее можно?
5 neckto
 
03.08.17
16:06
по твоей же ссылке :
сериализация/десериализация выполняется с помощью объекта СериализаторXDTO

СериализаторXDTO.ПрочитатьJSON(ЧтениеJSON)
6 just86
 
03.08.17
16:24
Судя по всему ничего не выйдет через сериализацию ибо нет у меня в базе такого справочника...
А если это не объект, тогда это просто структура, а в структуру превратится мешает знак #.
Обидно...
7 Вафель
 
03.08.17
16:32
тогда нужно читать в Соответствие
8 Вафель
 
03.08.17
16:32
есть такой параметр
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший