您為方案選擇的XDM欄位類型會限制這些欄位可以包含的資料類型。 本檔案提供每個核心欄位類型的概觀,包括其他可映射至的序列化格式,以及如何在API中定義您自己的欄位類型,以執行不同的限制。
在使用本指南之前,請先閱讀架 構構成的基本知識 ,以瞭解XDM架構、類和混合的簡介。
如果您打算定義自己的欄位類型,強烈建議您從 Schema Registry開發人員指南開始 ,以瞭解如何建立混合和資料類型以包含您的自訂欄位。
下表說明每個XDM類型(meta:xdmType
)與其他序列化格式之間的映射。
XDM類型 (meta:xdmType) |
JSON (JSON結構描述) |
Parce (type/annotation) |
Spark SQL | Java | 斯卡拉 | .NET | CosmosDB | MongoDB | 塞式飛行器 | Protobuf 2 |
---|---|---|---|---|---|---|---|---|---|---|
字串 | 類型:字串 | BYTE_ARRAY/UTF8 | StringType | java.lang.String | 字串 | System.String | 字串 | 字串 | 字串 | 字串 |
數字 | 類型:數字 | DOUBLE | DoubleType | java.lang.Double | 雙倍 | System.Double | 數字 | 雙倍 | 雙倍 | 雙倍 |
long | type: integermaximum:253+1<br>minimum:-253+1 |
INT64 | LongType | java.lang.Long | 長 | System.Int64 | 數字 | long | 整數 | int64 |
int | type: integermaximum:231<br>minimum:-231 |
INT32/INT_32 | IntegerType | java.lang.Integer | Int | System.Int32 | 數字 | int | 整數 | int32 |
短 | type: integermaximum:215<br>minimum:-215 |
INT32/INT_16 | ShortType | java.lang.Short | 簡短 | System.Int16 | 數字 | int | 整數 | int32 |
位元組 | type: integermaximum:27<br>minum:-27 |
INT32/INT_8 | ByteType | java.lang.Short | 位元組 | System.SByte | 數字 | int | 整數 | int32 |
布林值 | 類型:布爾型 | 布林值 | BooleanType | java.lang.Boolean | 布林值 | System.Boolean | 布林值 | bool | 整數 | 整數 |
日期 | type: stringformat:date (RFC 3339,第5.6節) |
INT32/日期 | 日期類型 | java.util.Date | java.util.Date | System.DateTime | 字串 | 日期 | 整數 (unix millis) |
int64 (unix millis) |
日期——時間 | type: stringformat:date-time (RFC 3339,第5.6節) |
INT64/TIMESTAMP_MILLIS | TimestampType | java.util.Date | java.util.Date | System.DateTime | 字串 | timestamp | 整數 (unix millis) |
int64 (unix millis) |
地圖 | 物件 | MAP注釋組 <key_type>必須是映射值的STRING <value_type>類型 |
MapType "keyType" MUST be StringType "valueType"是映射值的類型。 |
java.util.Map | 地圖 | — | 物件 | 物件 | 地圖 | map<key_type, value_type> |
XDM結構描述是使用 JSON結構描述標準和基本欄位類型來定義的 ,並對欄位名稱加上其他限制,由執行 Experience Platform。 「方 案註冊表API 」允許您通過使用格式和可選約束定義其他欄位類型。 XDM欄位類型由欄位級屬性公開 meta:xdmType
。
meta:xdmType
是系統產生的值,因此您不需要將此屬性新增至欄位的JSON。 最佳實務是使用JSON結構描述類型(例如字串和整數),並依下表所定義的適當最小/最大限制。
下表概述了使用可選屬性定義標量欄位類型和更具體欄位類型的適當格式。 如需選用屬性和類型特定關鍵字的詳細資訊,請參閱 JSON結構描述檔案。
若要開始,請尋找所需的欄位類型,並使用提供的范常式式碼來建立您的API要求, 以建立混音 或建立資料類型。
所需類型 (meta:xdmType) |
JSON (JSON結構描述) |
程式碼範例 |
---|---|---|
字串 | 類型:字 串可選屬性:
|
"sampleField":{ "type":"string", "pattern":"^[A-Z]{2}$", "maxLength":2 } |
uri (xdmType:string) |
類型:字 串格式:uri |
"sampleField":{ "type":"string", "format":"uri" } |
列舉 (xdmType:字串) |
類型:字 串可選屬性:
|
使用「meta:enum」指定面向客戶的選項標籤:
"sampleField":{ "type":「字串」、「列舉」:[ "value1"、"value2"、"value3" ]、"meta:enum":{ "value1":"值1"、"值2":"值2"、"值3":"Value 3" }, "default":"value1" } |
數字 | 類型:最低 數量:最大為±2.23×10^308 :±1.80×10^308 |
"sampleField":{ "type":"number" } |
long | 類型:最 大積分:2^53+1 最小值:-2^53+1 |
"sampleField":{ "type":"integer", "minimum":-9007199254740992,「最大值」:9007199254740992 } |
int | 類型:最 小積分:2 ^31,最小:-2^31 |
"sampleField":{ "type":"integer", "minimum":-2147483648,「最大值」:2147483648 } |
短 | 類型:最 小積分:2 ^15,最小:-2^15 |
"sampleField":{ "type":"integer", "minimum":-32768,「最大值」:32768 } |
位元組 | 類型:最 小積分:2^7 最小:-2^7 |
"sampleField":{ "type":"integer", "minimum":-128,「最大值」:128 } |
布林值 | 類型:boolean {true, false} Optional屬性:
|
"sampleField":{ "type":"boolean", "default":false } |
日期 | 類型:字 串格式:日期 |
"sampleField":{ "type":"string", "format":"date"、"examples":["2004-10-23"] }由 RFC 3339第5.6節定義的日期,其中"full-date" = date-fullyear "-" date-month "-" date-mday(YYYY-MM-DD) |
日期——時間 | 類型:字 串格式:日期——時間 |
"sampleField":{ "type":"string", "format":"date-time"、"examples":["2004-10-23T12:00:00-06:00"] }日期——時間,由 RFC 3339第5.6節定義,其中"date-time" =完整日期的"T"全時: (YYYY-MM-DD'T'HH:MM:SS.SSX) |
陣列 | 類型:陣列 | items.type可使用任何標量類型定義:
"sampleField":{ "type":"array", "items":{ "type":"字串" }由另一個方案定義的對象陣列: "sampleField":{ "type":"array", "items":{ "$ref":"id" } }其中,「id」是參考架構的{id}。 |
物件 | 類型:物件 | 屬性。{field}.type可使用任何標量類型來定義:
"sampleField":{ "type":"object"、"properties":{ "field1":{ "type":"string" }, "field2":{ "type":"number" } } }由引用方案定義的「對象」類型欄位: "sampleField":{ "type":"object", "$ref":"id" }其中,「id」是參考架構的{id}。 |
地圖 | 類型:對 像注 意:'map'資料類型的使用保留給產業和廠商架構使用,不適用於租用戶定義的欄位。 當資料表示為映射至某個值的索引鍵,或當索引鍵無法合理地包含在靜態架構中且必須視為資料值時,標準架構會使用它。 |
'map'不能定義任何屬性。 它必須定義單個"additionalProperties"模式,以說明'map'中包含的值類型。 XDM中的'map'只能包含單一資料類型。 值可以是任何有效的XDM模式定義,包括陣列或對象,或作為對其他模式的引用(通過$ref)。 值類型為'string'的映射欄位: "sampleField":{ "type":"object", "additionalProperties":{ "type":"字串" }值為字串陣列的映射欄位: "sampleField":{ "type":"object", "additionalProperties":{ "type":"array", "items":{ "type":"字串" } } }引用其他方案的映射欄位: "sampleField":{ "type":"object", "additionalProperties":{ "$ref":"id" } }其中,「id」是參考架構的{id}。 |