|
Преобразование массива структур в таблицу значений | ☑ | ||
---|---|---|---|---|
0
NordMad
19.04.21
✎
18:47
|
Добрый вечер, интересует такой вопрос: читал строку JSON таким вот образом
Функция ИзСтрокиВJSON(СтрокаОтвета)//Экспорт ЧтениеJSON = Новый ЧтениеJSON(); ЧтениеJSON.УстановитьСтроку(СтрокаОтвета); ОтветВJSON=ПрочитатьJSON(ЧтениеJSON); ЧтениеJSON.Закрыть(); Возврат ОтветВJSON; КонецФункции В результате получил структуру, некоторые атрибуты которой распарсились в массив структур типа: (имя; значение). Что достаточно неудобно в смысле поиска. Непонятно почему не считывается соответствием. Вопрос, как можно такую структуру преобразовать в соответствие или таблицу значений для быстрого поиска? или может быть как то иначе можно прочитать строку JSON исходную |
|||
1
NordMad
19.04.21
✎
18:48
|
(0) понятно что циклами можно, вопрос в том - можно это как то сделать оптимально? структура получилась большая и таких вот атрибутов -массивов в ней много
|
|||
2
Chameleon1980
19.04.21
✎
19:09
|
там, вроде каким-то параметром указывается, что
читать в соответствие |
|||
3
NordMad
19.04.21
✎
19:10
|
(2) ОтветВJSON=ПрочитатьJSON(ЧтениеJSON); здесь?
|
|||
4
acht
19.04.21
✎
19:18
|
(3) Давно бы уже синтакс-помощник открыл.
|
|||
5
novichok79
19.04.21
✎
19:58
|
// Возвращает таблицу значений на основании массива структур
// // Параметры: // МассивСтруктур - МассивСтруктур - массив структур, которые будут преобразованы в таблиц значений. // Свойства структуры первого элемента массива определяют состав колонок результирующей таблицы. // // Возвращаемое значение: // ТаблицаЗначений - таблица значений, созданная из массива структур. // Функция МассивВТаблицуЗначений(МассивСтруктур) Экспорт Таблица = Новый ТаблицаЗначений; // Создадим колонки по первой структуре массива Если ТипЗнч(МассивСтруктур) = Тип("Массив") И МассивСтруктур.Количество() <> 0 Тогда ПерваяСтруктура = МассивСтруктур[0]; Для Каждого Свойство Из ПерваяСтруктура Цикл Таблица.Колонки.Добавить(Свойство.Ключ, ОписаниеТиповПоТипу(ТипЗнч(Свойство.Значение))); КонецЦикла; Для Каждого Структура Из МассивСтруктур Цикл НоваяСтрока = Таблица.Добавить(); ЗаполнитьЗначенияСвойств(НоваяСтрока, Структура); КонецЦикла; КонецЕсли; Возврат Таблица; КонецФункции |
|||
6
novichok79
19.04.21
✎
20:03
|
(1) через какие-нибудь преобразования json-строки можно перевести в что-то подобное СериализаторXDTO.ЗаписатьJSON, а затем сделать СериализаторXDTO.ПрочитатьJSON. но непонятно что будет быстрее - ё**бля со строкой или перевод вышеописанной функцией. чуваки, которые писали ERP выбрали последний вариант, научитесь уже пользоваться глобальным поиском по конфигурации, найдете много интересного.
|
|||
7
NordMad
19.04.21
✎
22:25
|
(4) а подробнее? я не нашел
|
|||
8
NordMad
19.04.21
✎
22:28
|
(6) ну так получается что вы то тоже нашли только вариант обхода массива циклами. Это итак понятно что можно сделать, но выглядит громоздко. В том то и заключался вопрос - есть ли способ сделать это оптимально, например сразу при чтении строки JSON получить вместо массива структур соответствие, или возможно средствами платформы сделать преобразование.
|
|||
9
novichok79
19.04.21
✎
23:17
|
(8) как я помню - 1С не предоставляет способа конвертации набора значений, он дает повесить только свои обработчики при чтении JSON, а на выходе все равно получается структура или соответствие.
можно взять полученное из ПрочитатьJSON соответствие, сериализовать в XML, потом натравить ПреобразованиеXSL на него, потом прочитать обратно в объект - получится таблица значений. в любом случае, придется помучаться. |
|||
10
novichok79
19.04.21
✎
23:18
|
||||
11
vde69
20.04.21
✎
07:27
|
JSON нужен правильный объект и каждый элемент массив
|
|||
12
NordMad
20.04.21
✎
09:36
|
(9) выходит что такой вариант тоже танцы с бубнами..
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |