V
V
Vadim Yagofarov2020-06-16 14:10:38
JSON
Vadim Yagofarov, 2020-06-16 14:10:38

How to make such a json using the structure (1C)?

How to make such a json with the help of a structure?
I have this code

Функция СтруктураКакJSON(Структура)
  Поток = Новый ЗаписьJSON();
  Поток.УстановитьСтроку();
  ЗаписатьJSON(Поток, Структура);
  Возврат Поток.Закрыть();
КонецФункции

Функция ШаблонURL1GetForm(Запрос)
  Ответ = Новый HTTPСервисОтвет(200);
  Если Истина Тогда
    ДанныеОтвета = ПерваяФорма();
  Иначе
    ДанныеОтвета = ВтораяФорма();
  КонецЕсли;
  Тело = СтруктураКакJSON(ДанныеОтвета);
  
  Ответ.УстановитьТелоИзСтроки(Тело);
  Ответ.Заголовки.Вставить("Access-Control-Allow-Origin","*");
  Ответ.Заголовки.Вставить("Content-Type","application/json;charset=utf-8");
  Ответ.Заголовки.Вставить("Cache-Control","no-cache");
  Возврат Ответ;
КонецФункции

Функция ПолучитьСТруктурыПоля(title,description,type)
  Возврат Новый Структура("title,description,type",title,description,type);
КонецФункции


Функция ПолеФормы(ИмяПоля,ОписаниеПоля)
  СтруктураВОзврат = Новый Структура();
  СтруктураВОзврат.Вставить(ИмяПоля,Новый Структура("type,title","string",ОписаниеПоля));
  Возврат СтруктураВОзврат;
КонецФункции

Функция ПерваяФорма()
  
  ДанныеОтвета = Новый Структура();
  
  ДанныеОтвета = Новый Структура("title,type","Название формы","object");
  ДанныеОтвета.Вставить("properties",ПолеФормы("Name","Сколько лет?"));
  ДанныеОтвета.Вставить("properties",ПолеФормы("Age","Где проживаете?"));
  ДанныеОтвета.Вставить("properties",ПолеФормы("Learning","Где обучались?"));
  //ДанныеОтвета.Вставить("sity",);
  
  Возврат ДанныеОтвета;
КОнецФункции

Функция ВтораяФорма()
  
  ДанныеОтвета = Новый Структура();
    
  Возврат ДанныеОтвета;
КОнецФункции

And I can not achieve that I would be given this json
{
"title": "Название формы",
"type": "object",
"properties": {
    "Name": {
        "type": "string",
        "title": "Как вас зовут?"
    },
    "Age": {
        "type": "string",
        "title": "Сколько лет?"
    },
    "Learning": {
        "type": "string",
        "title": "Где вы обучались?"
    }
}
}

So far I've only received this
{
"title": "Название формы",
"type": "object",
"properties": {
"Learning": {
"type": "string",
"title": "Где обучались?"
}
}
}
Those. the data is overwritten, or I tried it differently, but there I got json like this
{
"title": "Название формы",
"type": "object",
"properties": {
    "Name": {
        "type": "string",
        "title": "Как вас зовут?"
    }
},
"properties": {
    
    "Age": {
        "type": "string",
        "title": "Сколько лет?"
    }
    
},
"properties": {
    "Name": {
        "type": "string",
        "title": "Как вас зовут?"
    }
}
}

Answer the question

In order to leave comments, you need to log in

2 answer(s)
K
Konstantin Nagibovich, 2020-06-16
@nki

Carefully figure out what and where you fill out step by step. The code is just some kind of mess.

S
Sergey, 2020-06-19
@Sergey512

ДанныеОтвета = Новый Структура("title,type","Название формы","object");
  ДанныеОтвета.Вставить("properties",ПолеФормы("Name","Сколько лет?"));
  ДанныеОтвета.Вставить("properties",ПолеФормы("Age","Где проживаете?"));
  ДанныеОтвета.Вставить("properties",ПолеФормы("Learning","Где обучались?"));

You have an error in this piece of code. The point is that a structure can only contain unique keys. And the key "properties" at you repeats 3 times. As a result, the third entry with this key overwrites the 2 previous ones.
Try like this:
масProperties = Новый Массив;
  масProperties.Добавить(ПолеФормы("Name", "Сколько лет?"));
  масProperties.Добавить(ПолеФормы("Age", "Где проживаете?"));
  масProperties.Добавить(ПолеФормы("Learning", "Где обучались?"));
  
  ДанныеОтвета = Новый Структура("title, type, properties", "Название формы", "object", масProperties);

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question