У меня есть XML-схема, которую я разбираю в JavaScript, а затем упаковываю как объект для передачи на один из моих внутренних серверов.
Схема похожа на
<complexType name='Test'>
<sequence>
<element name='testField' type='string'/>
<element name='typeSpecificSetting' type='tns:TypeSpecific'/>
</sequence>
</complexType>
<complexType name = "TypeSpecific">
<choice>
<element name='A' type='tns:ATYPE'/>
<element name='B' type='tns:BTYPE'/>
<element name='C' type='tns:CTYPE'/>
<element name='D' type='tns:DTYPE'/>
</choice>
</complexType>
<complexType name = "ATYPE">
<element name='testATYPEField' type='string'/>
</complexType>
<complexType name = "BTYPE">
<element name='testBTYPEField' type='string'/>
</complexType>
Я читаю XML-схему, а затем пытаюсь создать свой объект запроса.
request = {
testField: t1,
typeSpecificSetting: t2
}
Как я могу создать объект запроса по выбору? В зависимости от типа мне нужно упаковать объекты ATYPE, BTYPE, CTYPE или DTYPE? Как я могу этого добиться?



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Поскольку typeSpecific является сложным типом с одним выбором, тогда свойство typeSpecificSetting будет объектом, содержащим одно свойство, которое будет одним из testATYPEField, testBTYPEField, ...
request = {
testField: t1
typeSpecificSetting: {
A: {
testATYPEField: t2
}
}
}
ИЛИ ЖЕ
request = {
testField: t1
typeSpecificSetting: {
B: {
testBTYPEField: t2
}
}
}
и т.п.