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" 值感兴趣。
从 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" 值感兴趣。