在体验数据模型(XDM)架构中,字段的类型将限制字段可以包含的数据类型。 本文档概述了每个核心字段类型,包括可映射到的其他序列化格式,以及如何在API中定义您自己的字段类型以强制实施不同的限制。
在使用本指南之前,请查看 架构组合基础知识 有关XDM模式、类和模式字段组的介绍。
如果您计划在API中定义自己的字段类型,强烈建议您先从 架构注册开发人员指南 了解如何创建字段组和数据类型,以在中包含您的自定义字段。 如果您使用Experience PlatformUI创建架构,请参阅 在UI中定义字段 了解如何对自定义字段组和数据类型中定义的字段实施约束。
XDM是基于JSON架构构建的,因此,XDM字段在定义其类型时会继承类似的语法。 了解不同字段类型在JSON模式中的表示方式有助于指示每种类型的基本约束。
请参阅 API基础知识指南 有关Platform API中JSON模式和其他基础技术的更多信息。
下表概述了每个XDM类型在JSON模式中的表示方式,以及符合该类型的示例值:
XDM类型 | JSON架构 | 示例 |
---|---|---|
字符串 |
{"type":"string"} |
"Platinum" |
Double |
{"type":"number"} |
12925.49 |
Long |
{ "type":"integer", "maximum":9007199254740991,“最小”:-9007199254740991 } |
1478108935 |
整数 |
{ "type":"integer", "maximum":2147483648,“最小”:-2147483648 } |
24906290 |
Short |
{ "type":"integer", "maximum":32768,“最小”:-32768 } |
15781 |
Byte |
{ "type":"integer", "maximum":128,“最低”:-128 } |
90 |
日期* |
{ "type":"string", "format":"date" } |
"2019-05-15" |
DateTime* |
{ "type":"string", "format":"date-time" } |
"2019-05-15T20:20:39+00:00" |
布尔值 |
{"type":"string"} |
true |
*所有日期格式的字符串必须符合ISO 8601标准(RFC 3339,第5.6节)。
以下各节介绍了每种XDM类型如何映射到其他常见的序列化格式:
在下表中列出的标准XDM类型中, 地图 类型。 当数据表示为映射到某些值的键时,或者当静态架构中不能合理地包含键并且必须将其视为数据值时,标准架构中会使用映射。
许多标准XDM组件都使用映射类型,您还可以 定义自定义映射字段 。 下表中包含的映射类型旨在帮助您确定如果现有数据当前以下面列出的任何格式存储,则如何将现有数据映射到XDM。
XDM类型 | 镶木 | Spark SQL | Java |
---|---|---|---|
字符串 | 类型: BYTE_ARRAY 注释: UTF8 |
StringType |
java.lang.String |
双精度 | 类型:DOUBLE |
LongType |
java.lang.Double |
长 | 类型:INT64 |
LongType |
java.lang.Long |
整数 | 类型: INT32 注释: INT_32 |
IntegerType |
java.lang.Integer |
短 | 类型: INT32 注释: INT_16 |
ShortType |
java.lang.Short |
字节 | 类型: INT32 注释: INT_8 |
ByteType |
java.lang.Short |
日期 | 类型: INT32 注释: DATE |
DateType |
java.util.Date |
DateTime | 类型: INT64 注释: TIMESTAMP_MILLIS |
TimestampType |
java.util.Date |
布尔型 | 类型:BOOLEAN |
BooleanType |
java.lang.Boolean |
地图 | MAP — 注释组( <key-type> 必须 STRING ) |
MapType ( keyType 必须 StringType ) |
java.util.Map |
XDM类型 | 斯卡拉 | .NET | CosmosDB |
---|---|---|---|
字符串 | String |
System.String |
String |
双精度 | Double |
System.Double |
Number |
长 | Long |
System.Int64 |
Number |
整数 | Int |
System.Int32 |
Number |
短 | Short |
System.Int16 |
Number |
字节 | Byte |
System.SByte |
Number |
日期 | java.util.Date |
System.DateTime |
String |
DateTime | java.util.Date |
System.DateTime |
String |
布尔型 | Boolean |
System.Boolean |
Boolean |
地图 | Map |
(不适用) | object |
XDM类型 | MongoDB | 气塞 | 原虫2 |
---|---|---|---|
字符串 | string |
String |
string |
双精度 | double |
Double |
double |
长 | long |
Integer |
int64 |
整数 | int |
Integer |
int32 |
短 | int |
Integer |
int32 |
字节 | int |
Integer |
int32 |
日期 | date |
Integer (Unix毫秒) |
int64 (Unix毫秒) |
DateTime | timestamp |
Integer (Unix毫秒) |
int64 (Unix毫秒) |
布尔型 | bool |
Integer (0/1二进制) |
bool |
地图 | object |
map |
map<key_type, value_type> |
架构注册表API允许您通过使用格式和可选约束来定义自定义字段。 请参阅 在架构注册表API中定义自定义字段 以了解更多信息。