Jsonix 枚举

Jsonix enumerations

从 xsd 模式创建 Jsonix (2.x) 映射文件时,它会捕获枚举和所有可接受的值,例如

 {
    type: 'enumInfo',
    localName: 'TrackAdvanceNotificationStatusType',
    baseTypeInfo: 'String',
    values: ['BACK_ON_TRACK', 'FAIL']
  }

有什么方法可以方便地从我的 javascript 代码中利用这些枚举 ,还是它们仅供 Jsonix 内部使用?

免责声明:我是Jsonix的作者。

是的,你可以:

  • 从 Jsonix 上下文执行 context.getTypeInfoByTypeNameKey('{urn:ns}TrackAdvanceNotificationStatusType') 以通过 XML 架构类型名称查找类型。在下一个版本中,您将拥有更方便的 context.getTypeInfoByTypeName(...),它接受限定名称或字符串。
  • 您将获得类型信息的一个实例。在枚举的情况下,这将是 Jsonix.Model.EnumLeafInfo.
  • 的一个实例
  • typeInfo.entries 是字符串 value/unmarshalled 值的 key/value 哈希图。

但这里有一个警告:我还没有引入 public/private API 的概念。所以这个 API 在未来的版本中改变的可能性很小。这不太可能,但警告是公平的。

最好使用 Jsonix 准备的类型信息,因为它将具有枚举的字符串值以及已解析的值。对于基于字符串的枚举,它是无关紧要的,但如果您有其他非字符串简单类型,您可能会对 "real" 值感兴趣。