XDM字段类型约束

在体验数据模型(XDM)模式中,字段的类型将限制字段可以包含的数据类型。 本文档概述了每个核心字段类型,包括它们可以映射到的其他序列化格式,以及如何在API中定义您自己的字段类型以实施不同的约束。

入门指南

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

如果您计划在API中定义自己的字段类型,强烈建议您开始模式注册表开发人员指南,以了解如何创建混音和数据类型以将您的自定义字段包含在中。 如果您使用Experience Platform UI创建模式,请参阅定义UI中的字段的指南,了解如何对自定义混合和数据类型中定义的字段实现约束。

基本结构和示例

XDM构建在JSON模式之上,因此XDM字段在定义其类型时继承类似的语法。 了解JSON模式中不同字段类型的表示方式有助于指明每种类型的基本约束。

注意

有关JSON模式和平台API中的其他基础技术的详细信息,请参阅API基础指南

下表概述了每个XDM类型在JSON模式中的表示方式,以及与类型相符的示例值:

XDM类型 JSON模式 示例
字符串
{"type":"string"}
"Platinum"
多次
{"type":"number"}
12925.49
Long
{
  “类型”:"integer",
  “maximum”:9007199254740991,
  “minimum”:-9007199254740991
}
1478108935
整数
{
  “类型”:"integer",
  “maximum”:2147483648,
  “minimum”:-2147483648
}
24906290
{
  “类型”:"integer",
  “maximum”:32768,
  “minimum”:-32768
}
15781
字节
{
  “类型”:"integer",
  “maximum”:128,
  “minimum”:-128
}
90
日期*
{
  “类型”:"string",
  “格式”:"日期"
}
"2019-05-15"
DateTime*
{
  “类型”:"string",
  “格式”:"date-time"
}
"2019-05-15T20:20:39+00:00"
布尔值
{"type":"string"}
true

*所有日期格式化字符串必须符合ISO 8601标准(RFC 3339,第5.6节)。

将XDM类型映射到其他格式

以下各节介绍了每种XDM类型如何映射到其他常用序列化格式:

重要

在下表中列出的标准XDM类型中,Map类型也包括在内。 当数据表示为映射到某些值的键时,或者在静态模式中不能合理包括键并且必须被视为数据值时,映射在标准模式中使用。

地图类型字段保留用于行业和供应商模式的使用,因此不能用于您定义的自定义资源。 映射类型包含在以下表格中仅旨在帮助您确定如果当前以下列任何格式存储现有数据,如何将其映射到XDM。

Parce、Spark SQL和Java

XDM类型 镶木 Spark SQL Java
String 类型:BYTE_ARRAY
注释:UTF8
StringType java.lang.String
Double 类型:DOUBLE LongType java.lang.Double
Long 类型:INT64 LongType java.lang.Long
Integer 类型:INT32
注释:INT_32
IntegerType java.lang.Integer
Short 类型:INT32
注释:INT_16
ShortType java.lang.Short
Byte 类型:INT32
注释:INT_8
ByteType java.lang.Short
Date 类型:INT32
注释:DATE
DateType java.util.Date
DateTime 类型:INT64
注释:TIMESTAMP_MILLIS
TimestampType java.util.Date
Boolean 类型:BOOLEAN BooleanType java.lang.Boolean
Map MAP-annotated group

(<key-type> 必须 STRING)
MapType

(keyType 必须 StringType)
java.util.Map

Scala、.NET和CosmosDB

XDM类型 斯卡拉 .NET CosmosDB
String String System.String String
Double Double System.Double Number
Long Long System.Int64 Number
Integer Int System.Int32 Number
Short Short System.Int16 Number
Byte Byte System.SByte Number
Date java.util.Date System.DateTime String
DateTime java.util.Date System.DateTime String
Boolean Boolean System.Boolean Boolean
Map Map (不适用) object

MongoDB、Aeropspike和Protobuf 2

XDM类型 MongoDB 气塞 Protobuf 2
String string String string
Double double Double double
Long long Integer int64
Integer int Integer int32
Short int Integer int32
Byte int Integer int32
Date date Integer
(Unix毫秒)
int64
(Unix毫秒)
DateTime timestamp Integer
(Unix毫秒)
int64
(Unix毫秒)
Boolean bool Integer
(0/1二进制)
bool
Map object map map<key_type, value_type>

在API中定义XDM字段类型

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

注意

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

下表概述了定义不同字段类型(包括具有可选属性的字段类型)的适当格式。 有关可选属性和类型特定关键字的详细信息,请通过JSON模式文档获取。

要开始,请找到所需的字段类型,并使用提供的示例代码构建API请求,以便创建mixin创建数据类型

XDM类型 可选属性 示例
字符串
  • pattern
  • minLength
  • maxLength
"sampleField":{
    “类型”:"string",
    “模式”:"^[A-Z]{2}$",
    "maxLength":2
}
URI
"sampleField":{
  “类型”:"string",
  “格式”:"uri"
}
枚举
  • default
  • meta:enum
约束枚举值在enum数组下提供,而每个值的面向客户的可选标签可以在meta:enum下提供:
"sampleField":{
  “类型”:"string",
  "enum":[
      "value1",
      "value2",
      "value3"
  ],
  "meta:enum":{
      "value1":"值1",
      “value2”:"值2",
      "value3":"值3"
  },
  “默认”:"value1"
}
编号
"sampleField":{
  “类型”:"number"
}
Long
"sampleField":{
  “类型”:"integer",
  “minimum”:-9007199254740992,
  “maximum”:9007199254740992
}
整数
"sampleField":{
  “类型”:"integer",
  “minimum”:-2147483648,
  “maximum”:2147483648
}
"sampleField":{
  “类型”:"integer",
  “minimum”:-32768,
  “maximum”:32768
}
字节
"sampleField":{
  “类型”:"integer",
  “minimum”:-128,
  “maximum”:128
  }
布尔值
  • default
"sampleField":{
  “类型”:"boolean",
  “默认”:假
}
日期
"sampleField":{
  “类型”:"string",
  “格式”:“日期”,
  “examples”:["2004-10-23"]
}
DateTime
"sampleField":{
  “类型”:"string",
  “格式”:"date-time",
  “examples”:["2004-10-23T12:00:00-06:00"]
}
数组 基本标量类型(例如字符串)的数组:
"sampleField":{
  “类型”:"array",
  “项目”:{
    “类型”:"字符串"
  }
}
由另一个模式定义的对象数组:
"sampleField":{
  “类型”:"array",
  “项目”:{
    “$ref”:"https://ns.adobe.com/xdm/data/paymentitem"
  }
}
对象 properties下定义的每个子字段的type属性可以使用任何标量类型进行定义:
"sampleField":{
  “类型”:"object",
  “属性”:{
    "field1":{
      “类型”:"字符串"
    },
    "field2":{
      “类型”:"number"
    }
  }
}
可通过引用数据类型的$id来定义对象类型字段:
"sampleField":{
  “类型”:"object",
  “$ref”:"https://ns.adobe.com/xdm/common/phoneinteraction"
}
映射 映射不能定义任何属性。 它必须定义单个additionalProperties模式来描述映射中包含的值类型(每个映射只能包含单个数据类型)。 值可以是任何有效的XDM type属性,也可以是使用$ref属性对其他模式的引用。

具有字符串类型值的映射字段:
"sampleField":{
  “类型”:"object",
  "additionalProperties":{
    “类型”:"字符串"
  }
}
具有以下值字符串数组的映射字段:
"sampleField":{
  “类型”:"object",
  "additionalProperties":{
    “类型”:"array",
    “项目”:{
      “类型”:"字符串"
    }
  }
}
引用其他数据类型的映射字段:
"sampleField":{
  “类型”:"object",
  "additionalProperties":{
    “$ref”:"https://ns.adobe.com/xdm/data/paymentitem"
  }
}

在此页面上

Adobe Summit Banner

A virtual event April 27-28.

Expand your skills and get inspired.

Register for free
Adobe Summit Banner

A virtual event April 27-28.

Expand your skills and get inspired.

Register for free
Adobe Maker Awards Banner

Time to shine!

Apply now for the 2021 Adobe Experience Maker Awards.

Apply now
Adobe Maker Awards Banner

Time to shine!

Apply now for the 2021 Adobe Experience Maker Awards.

Apply now