JSONIX: получить ограничения и значение по умолчанию для свойств
Я использую JSONIX для маршалинга и демаршаллинга XML-файлов. Пока это работает довольно хорошо. Чего мне не хватает, так это возможности получить значения и ограничения по умолчанию, такие как minOccours и maxOccours-Values. Возможно ли это как-то с JSONIX?
Эти свойства:
<xsd:sequence>
<xsd:element name="inflowMin" type="framework:flowType" minOccurs="0" maxOccurs="1"/>
<xsd:element name="inflowMax" type="framework:flowType" minOccurs="0" maxOccurs="1"/>
<xsd:element name="unitOfFlowControl" type="framework:flowUnit" minOccurs="0" maxOccurs="1"/>
</xsd:sequence>
<xsd:attribute name="waterCosts" type="xsd:double" default="0.0"/>
<xsd:attribute name="controllable" type="xsd:boolean" default="0"/>
<xsd:attribute name="scalingOfControl" type="xsd:double" default="1.0" />
Получить:
propertyInfos: [{
type: 'element',
name: 'inflowMin',
elementName: 'inflowMin',
typeInfo: ...
}, {
type: 'element',
name: 'inflowMax',
elementName: 'inflowMax',
typeInfo: ...
}, {
type: 'element',
name: 'unitOfFlowControl',
elementName: 'unitOfFlowControl',
typeInfo: 'String'
}, {
name: 'waterCosts',
typeInfo: 'Double',
attributeName: 'waterCosts',
type: 'attribute'
}, {
name: 'controllable',
typeInfo: 'Boolean',
attributeName: 'controllable',
type: 'attribute'
}, {
name: 'scalingOfControl',
typeInfo: 'Double',
attributeName: 'scalingOfControl',
type: 'attribute'
}]
}
Спасибо!
2 ответа
Запрошенная вами функция теперь реализована в Jsonix 2.3.2 и Jsonix Schema Compiler 2.3.7.
Jsonix Schema Compiler теперь производит required
, minOccurs
а также maxOccurs
в сгенерированных сопоставлениях и схеме JSON.
Вот как это выглядит в отображениях:
{
localName: 'Items',
propertyInfos: [{
name: 'item',
minOccurs: 0,
maxOccurs: 100,
collection: true,
elementName: {
localPart: 'item'
},
typeInfo: '.Items.Item'
}]
}
И в схеме JSON:
"Items":{
"type":"object",
"title":"Items",
"properties":{
"item":{
"title":"item",
"allOf":[
{
"type":"array",
"items":{
"$ref":"#/definitions/Items.Item"
},
"maxItems":100,
"minItems":0
}
],
"propertyType":"element",
"elementName":{
"localPart":"item",
"namespaceURI":""
}
}
},
"typeType":"classInfo",
"typeName":{
"localPart":"Items",
"namespaceURI":""
},
"propertiesOrder":[
"item"
]
}
Вы можете получить доступ к этим метаданным из контекста Jsonix следующим образом:
var context = new Jsonix.Context([ PO ]);
var itemsClassInfo = context.getTypeInfoByName("PO.Items");
var itemPropertyInfo = itemsClassInfo.getPropertyInfoByName("item");
test.equal(false, itemPropertyInfo.required);
test.equal(0, itemPropertyInfo.minOccurs);
test.equal(100, itemPropertyInfo.maxOccurs);
test.done();
Отказ от ответственности: я автор.
На данный момент нет, эта информация еще не сформирована. Тогда была эта проблема, но она не была реализована.
Если вы заинтересованы в этой функции, пожалуйста, подайте две проблемы здесь (одна для значения по умолчанию, а другая для minOccurs
/maxOccurs
).
В принципе, эта информация доступна из XML-схемы, но в некоторых случаях ее нельзя явно сопоставить сгенерированной моделью. В некоторых странных случаях, таких как повторяющийся выбор или последовательность, это не будет работать, но в большинстве случаев это будет работать. Так что это осуществимо, пожалуйста, подайте вопросы.
Вам просто нужны эти вещи в сгенерированных отображениях? Или какой-то API для доступа к нему?