Перечисления Jsonix
При создании файлов сопоставления Jsonix (2.x) из схемы xsd он захватывает перечисления и все допустимые значения, например
{
type: 'enumInfo',
localName: 'TrackAdvanceNotificationStatusType',
baseTypeInfo: 'String',
values: ['BACK_ON_TRACK', 'FAIL']
}
Можно ли как-нибудь удобно использовать эти значения перечисления в моем коде javascript, или они предназначены только для внутреннего использования Jsonix?
1 ответ
Отказ от ответственности: я автор Jsonix.
Да, ты можешь:
- Из контекста Jsonix сделать
context.getTypeInfoByTypeNameKey('{urn:ns}TrackAdvanceNotificationStatusType')
искать тип через имя типа схемы XML. В следующей версии у вас будет более удобныйcontext.getTypeInfoByTypeName(...)
который принимает квалифицированные имена или строки. - Вы получите экземпляр вашего типа информации. В случае перечисления это будет
Jsonix.Model.EnumLeafInfo
, typeInfo.entries
является хэш-таблицей ключ / значение строкового значения / немаршализованного значения.
Но вот предупреждение: я еще не ввел понятие публичного / частного API. Таким образом, существует определенная минимальная вероятность того, что этот API изменится в будущих версиях. Это маловероятно, но справедливо предупредить.
Лучше использовать информацию о типе, подготовленную Jsonix, так как она будет иметь строковые значения перечислений, а также проанализированные значения. Для строковых перечислений это не имеет значения, но если у вас есть другие, не строковые простые типы, вас могут заинтересовать "реальные" значения.