@GIRUPC
Веб-программист

Как с помощью структуры(1С) сделать отдавался вот такой json?

Как с помощью структуры сделать отдавался вот такой json?
Имею вот такой код
Функция СтруктураКак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",);
	
	Возврат ДанныеОтвета;
КОнецФункции

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

И не могу добиться что бы мне отдавался вот такой json
{
"title": "Название формы",
"type": "object",
"properties": {
    "Name": {
        "type": "string",
        "title": "Как вас зовут?"
    },
    "Age": {
        "type": "string",
        "title": "Сколько лет?"
    },
    "Learning": {
        "type": "string",
        "title": "Где вы обучались?"
    }
}
}

Пока получаю только вот такой
{
"title": "Название формы",
"type": "object",
"properties": {
"Learning": {
"type": "string",
"title": "Где обучались?"
}
}
}
Т.е. данные перезаписываются, либо по другому пробовал но там json получал вот такого типа
{
"title": "Название формы",
"type": "object",
"properties": {
    "Name": {
        "type": "string",
        "title": "Как вас зовут?"
    }
},
"properties": {
    
    "Age": {
        "type": "string",
        "title": "Сколько лет?"
    }
    
},
"properties": {
    "Name": {
        "type": "string",
        "title": "Как вас зовут?"
    }
}
}
  • Вопрос задан
  • 537 просмотров
Пригласить эксперта
Ответы на вопрос 2
nki
@nki
bezkart.ru готовая система лояльности
По шагам аккуратно разберитесь, что и где вы заполняете. В коде просто каша какая-то.
Ответ написан
Sergey512
@Sergey512
Программист 1с
ДанныеОтвета = Новый Структура("title,type","Название формы","object");
  ДанныеОтвета.Вставить("properties",ПолеФормы("Name","Сколько лет?"));
  ДанныеОтвета.Вставить("properties",ПолеФормы("Age","Где проживаете?"));
  ДанныеОтвета.Вставить("properties",ПолеФормы("Learning","Где обучались?"));


В данном куске кода у тебя ошибка. Смысл в том, что структура может содержать в себе только уникальные ключи. А ключ "properties" у тебя повторяется 3 раза. В итоге третья запись с этим ключом перетирает 2 предыдущие.

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

Войдите, чтобы написать ответ

Похожие вопросы