在Experience Data Model(XDM)結構中,欄位的類型會限制欄位可包含的資料類型。 本檔案概略介紹每個核心欄位類型,包括可對應的其他序列化格式,以及如何在API中定義您自己的欄位類型,以強制執行不同的限制。
使用本指南之前,請先檢閱 綱要構成基本知識 XDM結構、類別和結構欄位群組的簡介。
如果您打算在API中定義自己的欄位類型,強烈建議您從 Schema Registry開發人員指南 了解如何建立欄位群組和資料類型,以在中納入自訂欄位。 如果您是使用Experience PlatformUI來建立結構,請參閱 定義UI中的欄位 了解如何對您在自訂欄位群組和資料類型中定義的欄位實施限制。
XDM是以JSON結構描述為基礎而建置,因此XDM欄位在定義其類型時會繼承類似的語法。 了解JSON結構描述中不同欄位類型的呈現方式,有助於指出每種類型的基本限制。
請參閱 API基礎指南 如需Platform API中JSON結構描述和其他基礎技術的詳細資訊。
下表概述每個XDM類型在JSON結構描述中的表示方式,以及符合類型的範例值:
XDM類型 | JSON結構 | 範例 |
---|---|---|
字串 |
{"type":"string"} |
"Platinum" |
Double |
{"type":"number"} |
12925.49 |
長 |
{ "type":"integer", "maximum":9007199254740991,「最低」:-9007199254740991 } |
1478108935 |
整數 |
{ "type":"integer", "maximum":2147483648,「最低」:-2147483648 } |
24906290 |
簡稱 |
{ "type":"integer", "maximum":32768,「最低」:-32768 } |
15781 |
位元組 |
{ "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 | 塞普克 | Protobuf 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> |
Schema Registry API可讓您透過使用格式和選用限制來定義自訂欄位。 請參閱 定義結構註冊表API中的自訂欄位 以取得更多資訊。