Перечисления 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, так как она будет иметь строковые значения перечислений, а также проанализированные значения. Для строковых перечислений это не имеет значения, но если у вас есть другие, не строковые простые типы, вас могут заинтересовать "реальные" значения.

Другие вопросы по тегам