XDM字段类型约束

您为模式选择的XDM字段类型会限制这些字段可以包含的数据类型。 此文档概述了每个核心字段类型,包括可映射到的其他序列化格式,以及如何在API中定义您自己的字段类型以实施不同的约束。

入门指南

在使用本指南之前,请查阅 模式合成的基础 ,了解XDM模式、类和混合的简介。

如果您计划定义自己的字段类型,强烈建议您开始《 模式注册表开发人员指南 》,了解如何创建混音和数据类型以将自定义字段包含在中。

将XDM类型映射到其他格式

下表描述了每种XDM类型()和其meta:xdmType他序列化格式之间的映射。

XDM类型
(meta:xdmType)
JSON
(JSON模式)
Parke
(类型/注释)
Spark SQL Java 斯卡拉 .NET CosmosDB MongoDB 塞式飞行器 Protobuf 2
字符串 类型:字符串 BYTE_ARRAY/UTF8 字符串类型 java.lang.String 字符串 System.String 字符串 字符串 字符串 字符串
数字 类型:数字 多次 DoubleType java.lang.Double 双精度 System.Double 数值 多次 双精度 多次
type:
integermaximum:253+1<br>minimum:-253+1
INT64 LongType java.lang.Long System.Int64 数值 整数 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>minimum:-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)
date-time 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>

在API中定义XDM字段类型

XDM模式是使用JSON 模式标准和基 本字段类型定义 Experience Platform,并对字段名称进行附加约束,这些约束由强制实施。 模式 注册表API 允许您通过使用格式和可选约束定义其他字段类型。 XDM字段类型由字段级属性公开 meta:xdmType

注意

meta:xdmType 是系统生成的值,因此您无需将此属性添加到字段的JSON中。 最佳实践是将JSON模式类型(如字符串和整数)与下表中定义的适当最小/最大约束一起使用。

下表概述了使用可选属性定义标量字段类型和更多特定字段类型的适当格式。 有关可选属性和类型特定关键字的更多信息,请通过JSON 模式文档获取

首先,找到所需的字段类型,然后使用提供的示例代码构建API请求, 以创建混合 或创建数据类型

所需类型
(meta:xdmType)
JSON
(JSON模式)
代码示例
字符串 类型:字

符串可选属性:
  • 图案
  • minLength
  • maxLength
        "sampleField":{ "type":"string", "pattern":"^[A-Z]{2}$", "maxLength":2 }
      
uri
(xdmType:string)
类型:
字符串格式:uri
        "sampleField":{ "type":"string", "format":"uri" }
      
枚举
(xdmType:字符串)
类型:

string可选属性:
  • 默认
使用“meta:enum”指定面向客户的选项标签:
        "sampleField":{ "type":"string", "enum":[ "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" }
      
类型:最
大积分:2^53+1
最小积分:-2^53+1
        "sampleField":{ "type":"integer", "minimum":-9007199254740992, "maximum":9007199254740992 }
      
int 类型:最
大积分:2
^31最小积分:-2^31
        "sampleField":{ "type":"integer", "minimum":-2147483648, "maximum":2147483648 }
      
类型:最
大积分:2
^15最小积分:-2^15
        "sampleField":{ "type":"integer", "minimum":-32768, "maximum":32768 }
      
字节 类型:最
大积分:2^
7最小积分:-2^7
        "sampleField":{ "type":"integer", "minimum":-128, "maximum":128 }
      
布尔
类型:boolean
{true, false}可

选属性:
  • 默认
        "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)
date-time 类型:
字符串格式:date-time
        "sampleField":{ "type":"string", "format":“date-time”、“examples”:["2004-10-23T12:00:00-06:00"] }
      
Date-Time,由 RFC 3339第5.6节定义,其中“date-time”=完整日期“T”全时:
(YYYY-MM-DD'T'HH:MM:SS.SSSX)
阵列 类型:阵列 items.type可使用任何标量类型定义:
        "sampleField":{ "type":"array", "items":{ "type":"string" } }
      
由另一个模式定义的对象数组:
        "sampleField":{ "type":"array", "items":{ "$ref":"id" } }
      
其中“id”是引用模式的{id}。
对象 类型:对象 属性。{field}.type可以使用任何标量类型定义:
        "sampleField":{ "type":"object", "properties":{ "field1":{ "type":"string" }, "field2":{ "type":"number" } } } }
      
引用模式定义的“object”类型字段:
        "sampleField":{ "type":“对象”、“$ref”:"id" }
      
其中“id”是引用模式的{id}。
地图 类型:对

象注
意:“map”数据类型的使用是为行业和供应商模式的使用而保留的,不可用于租户定义的字段。 当数据表示为映射到某个值的键时,或者在静态模式中无法合理包含键并且必须作为数据值时,它将在标准模式中使用。
“map”不能定义任何属性。 它必须定义单个“additionalProperties”模式来描述“map”中包含的值类型。 XDM中的“map”只能包含单个数据类型。 值可以是任何有效的XDM模式定义,包括数组或对象,或作为对其他模式的引用(通过$ref)。

具有“string”类型值的映射字段:
        "sampleField":{ "type":"object", "additionalProperties":{ "type":"string" } }
      
值为字符串数组的映射字段:
        "sampleField":{ "type":"object", "additionalProperties":{ "type":"array", "items":{ "type":"string" } } } }
      
引用其他模式的映射字段:
        "sampleField":{ "type":"object", "additionalProperties":{ "$ref":"id" } }
      
其中“id”是引用模式的{id}。

在此页面上