Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Нужно создать в 1С массив-структур в формате json

Нужно создать в 1С массив-структур в формате json
Я
   Обработка
 
24.11.21 - 09:11
Вот структра кторая требуется:

"route_points": [
    {
      "coordinates": [71.40182314019768,51.13285146954383]
    },
    {
      "coordinates":[71.50529418933989,51.13162822572868]
    }
    ]

route_points N-значный массив. Этот массив в которм, структура из двух двухзначных массивов в которых хранится точки координат (долгота и широта) отправки и поступления.

Как это реализовывать?
   Kassern
 
1 - 24.11.21 - 09:14
(0) Присваиваете имя массиву, Для каждой coordinates добавляете начало объекта, в объекте снова массив с именем coordinates, в нем уже пихаете точки.
   Галахад
 
2 - 24.11.21 - 09:16
МассивКоодр = Новый Массив;
МассивКоорд.Добавить(а);
МассивКоорд.Добавить(б);
Коорд = Новый Структура;
Коорд.Вставить("coordinates", МассивКоорд);

route_points = Новый Массив;
route_points.Добавить(МассивКоорд);
   Kassern
 
3 - 24.11.21 - 09:17
(0) чтобы было проще понимать:
[ - Массив
{ - объект
   Галахад
 
4 - 24.11.21 - 09:19
(2)+ Млин:

МассивКоодр = Новый Массив;
МассивКоорд.Добавить(а);
МассивКоорд.Добавить(б);
Коорд = Новый Структура;
Коорд.Вставить("coordinates", МассивКоорд);

route_points = Новый Массив;
route_points.Добавить(Коорд);
   Галахад
 
5 - 24.11.21 - 09:22
Да млин.
Структура = Новый Структура;
Структура.Вставить("route_points", route_points);
   Обработка
 
6 - 24.11.21 - 09:39
Спасибо за помощь и ответы.
Но мне кажется не совсем то.
Вместо 2х координат получается один.
   Галахад
 
7 - 24.11.21 - 09:41
(6) Напрягись и добавь еще одну.
   mTema32
 
8 - 24.11.21 - 09:50
Вот это: "coordinates": [71.40182314019768,51.13285146954383]
Стандартными средствами не получится сделать, если прямо так нужно с квадратными скобками.
Пилите вручную.
   Garykom
 
9 - 24.11.21 - 09:50
(0) не можешь через структуры (соответствия) и массивы делай напрямую через ЗаписьJSON
https://wonderland.v8.1c.ru/blog/sredstva-raboty-s-json/
   Garykom
 
10 - 24.11.21 - 09:52
(8) все получится
   Garykom
 
11 - 24.11.21 - 09:53
   ДенисЧ
 
12 - 24.11.21 - 09:55
(8) Это с какого перепугу?
   Галахад
 
13 - 24.11.21 - 09:58
(9) Не учи плохому. :-)
   Garykom
 
14 - 24.11.21 - 09:59
(13) практически это более шустрый способ
   Garykom
 
15 - 24.11.21 - 10:00
(14)+ на реально больших объемах с мало оперативки особенно оптимальней вручную напрямую
   Kassern
 
16 - 24.11.21 - 10:01
(0) А где у вас начало объекта?
Нельзя начинать json с имени свойства на обернув это дело в объект!
   Kassern
 
17 - 24.11.21 - 10:02
(16) Вот так будет правильно:
{
    "route_points": [{
            "coordinates": [71.40182314019768, 51.13285146954383]
        },
        {
            "coordinates": [71.50529418933989, 51.13162822572868]
        }
    ]
}
   Kassern
 
18 - 24.11.21 - 10:07
(6) Ну так добавьте 2 координаты) 
route_points = Новый Массив;
    route_points.Добавить(Коорд);
    route_points.Добавить(Коорд);
   Гипервизор
 
19 - 24.11.21 - 10:13
Т.е. я правильно понимаю, для примера из (0) формирование json без использования сериализации будет выглядеть вот так?

ЗаписьJSON = Новый ЗаписьJSON;
ЗаписьJSON.УстановитьСтроку();
ЗаписьJSON.ЗаписатьНачалоОбъекта();

ЗаписьJSON.ЗаписатьИмяСвойства("route_points");
ЗаписьJSON.ЗаписатьНачалоМассива();

ЗаписьJSON.ЗаписатьНачалоОбъекта();
ЗаписьJSON.ЗаписатьИмяСвойства("coordinates");
ЗаписьJSON.ЗаписатьНачалоМассива();
ЗаписьJSON.ЗаписатьЗначение(71.40182314019768);
ЗаписьJSON.ЗаписатьЗначение(51.13285146954383);
ЗаписьJSON.ЗаписатьКонецМассива();
ЗаписьJSON.ЗаписатьКонецОбъекта();

ЗаписьJSON.ЗаписатьНачалоОбъекта();
ЗаписьJSON.ЗаписатьИмяСвойства("coordinates");
ЗаписьJSON.ЗаписатьНачалоМассива();
ЗаписьJSON.ЗаписатьЗначение(71.50529418933989);
ЗаписьJSON.ЗаписатьЗначение(51.13162822572868);
ЗаписьJSON.ЗаписатьКонецМассива();
ЗаписьJSON.ЗаписатьКонецОбъекта();

ЗаписьJSON.ЗаписатьКонецМассива();

ЗаписьJSON.ЗаписатьКонецОбъекта();
СтрокаJSON = ЗаписьJSON.Закрыть();
   Kassern
 
20 - 24.11.21 - 10:16
(19) да, только ТС забыл обернуть свой текст в {} чтобы превратить в json.
   mTema32
 
21 - 24.11.21 - 10:20
(0)
Если вот это "[12.121, 1222]" - просто строка, тогда вот так надо:

        СтруктураОсновная = Новый Структура;
    Массив = Новый Массив;
    
    СтруктураЭлемента1 = Новый Структура;
    СтруктураЭлемента1.Вставить("coordinates", "[71.263,12.3213]");
    
    СтруктураЭлемента2 = Новый Структура;
    СтруктураЭлемента2.Вставить("coordinates", "[71.263,12.3213]");
    
    Массив.Добавить(СтруктураЭлемента1);
    Массив.Добавить(СтруктураЭлемента2);
    
    СтруктураОсновная.Вставить("route_points", Массив); 
    
    ЗаписьJSON = Новый ЗаписьJSON();
        ЗаписьJSON.УстановитьСтроку();
        
    ЗаписатьJSON(ЗаписьJSON, СтруктураОсновная);
    Json = ЗаписьJSON.Закрыть();

Циклы там и обход сами добавите.
   Kassern
 
22 - 24.11.21 - 10:24
(21) вы походу не уловили суть данного json. в coordinates передается массив координат. Скобки [] - говорят о массиве значений, а запятая разделяет их. В данном случае 71.263 и 12.3213 - две точки координат.
   Garykom
 
23 - 24.11.21 - 10:25
(21) ыыыыыы
   Kassern
 
24 - 24.11.21 - 10:25
(21) уже скинули верный текст, которые правильно формирует json еще в начале топика. Вот он собранный в 1 посте:
    МассивКоорд = Новый Массив;
    МассивКоорд.Добавить("71.40182314019768");
    МассивКоорд.Добавить("51.13285146954383");
    Коорд = Новый Структура;
    Коорд.Вставить("coordinates", МассивКоорд);    
    route_points = Новый Массив;
    route_points.Добавить(Коорд);
    route_points.Добавить(Коорд);
    Структура=Новый Структура("route_points",route_points);
    ЗаписьJson=Новый ЗаписьJSON;
    ЗаписьJson.УстановитьСтроку(); 
    ЗаписатьJSON(ЗаписьJson,Структура);
    Результат=ЗаписьJson.Закрыть();
   Обработка
 
25 - 24.11.21 - 10:37
Уточню для тез кто чуть ушел не в ту сторону.
Мне нужно чтоб внутри были две точки "Пункт Отправитель" и "Пункт получатель"
   mistеr
 
26 - 24.11.21 - 10:40
(22) >две точки координат

Ты хотел сказать "две координаты точки".
   Garykom
 
27 - 24.11.21 - 10:59
для меня немного странно что человек с таким вот опытом v8: Ищу работу (Казахстан, Алматы)

не может понять простейшую вещь
   Garykom
 
28 - 24.11.21 - 10:59
   Обработка
 
29 - 24.11.21 - 11:05
(27) Открою тайну. Самому некогда тестить и придумывать.
По сути ветка и тема моей коллеги.
У нее нет аккаунта тут и особо не ходит по форумам пока.
Извините если пришлось поэксплуатировать ваши мозги. ))
   Обработка
 
30 - 24.11.21 - 11:06
(29)  к (28)...
 
 
   Garykom
 
31 - 24.11.21 - 11:08
(29) Т.е. ты с таким опытом не мог с лету ответить коллеге и завел тут тему? На смешную тему.
   mTema32
 
32 - 24.11.21 - 11:09
(25) Сч = 4;
    
    ОсновнойМассив = Новый Массив;
    
    Пока Сч > 0 Цикл
        
        СтруктураОсновная = Новый Структура;    
        Массив = Новый Массив;
        
        МассивКоординат1 = Новый Массив;
        МассивКоординат1.Добавить("71.263");
        МассивКоординат1.Добавить("12.3213");
        
        МассивКоординат2 = Новый Массив;
        МассивКоординат2.Добавить("71.265");
        МассивКоординат2.Добавить("12.3215");
        
        СтруктураЭлемента1 = Новый Структура;
        СтруктураЭлемента1.Вставить("coordinates", МассивКоординат1);
        
        СтруктураЭлемента2 = Новый Структура;
        СтруктураЭлемента2.Вставить("coordinates", МассивКоординат2);
        
        Массив.Добавить(СтруктураЭлемента1);
        Массив.Добавить(СтруктураЭлемента2);
        
        СтруктураОсновная.Вставить("route_points", Массив); 
        
        ОсновнойМассив.Добавить(СтруктураОсновная);
                
        Сч = Сч - 1;
        
    КонецЦикла;
    
    ЗаписьJSON = Новый ЗаписьJSON();
    ЗаписьJSON.УстановитьСтроку();
    ЗаписатьJSON(ЗаписьJSON, ОсновнойМассив);
    Json = ЗаписьJSON.Закрыть();


Вот так што ле надо?
   mTema32
 
33 - 24.11.21 - 11:10
(29) Охеренно. А нам тут нечем заняться стало быть.
   acht
 
34 - 24.11.21 - 11:10
(29) > ветка и тема моей коллеги.
Еще одно ленкавовка
   Обработка
 
35 - 24.11.21 - 11:13
(31) (33) Когда вам будет уже 50 лет у вас подход к решению задач точно изменится.
   acht
 
36 - 24.11.21 - 11:15
(35) Оправдание своим возрастом, оно такое... забавное
   Garykom
 
37 - 24.11.21 - 11:16
(35) Мне думаешь еще 9 лет что то сильно изменят?
Нет уж. Вайтишник это диагноз.
   acht
 
38 - 24.11.21 - 11:17
(35) Кстати, а кто это пишет - ты или твоя коллега? =))))))))))))
   Garykom
 
39 - 24.11.21 - 11:20
(38) "У моей подруги с её парнем"
   Обработка
 
40 - 24.11.21 - 11:22
Ну вы не позортье меня перед ней.
Ей 20 лет мне 50.
Эту аккаунт полностью мой.
Всегда сам писал и отвечал.
Аналогичным образом решал проблему коллег не раз за эти 15 лет.

Кстати я коллеге на словах сразу ответил но не было 100% уверенности.
И обратился к сообществу. Ничего в этом не вижу зазорного.
Иногда могу тут запостить совсем тупой вопрос просто из-за того что не успеваю продумать...
Конечно хейта тоже получаю. Но главное решается задача.
   mistеr
 
41 - 24.11.21 - 11:24
(33) Если быть до конца честным, то да, так и есть. :)


Список тем форума
 
Основная теорема систематики: Новые системы плодят новые проблемы.
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.