使用自定义操作动态传递收藏集

您可以在自定义操作参数中传递将在运行时动态填充的集合。 支持两种收藏集:

  • 简单收藏集:简单数据类型的数组,例如,具有listString的数组:

    {
     "deviceTypes": [
         "android",
         "ios"
     ]
    }
    
  • 对象集合:JSON对象数组,例如:

    {
    "products":[
       {
          "id":"productA",
          "name":"A",
          "price":20.1
       },
       {
          "id":"productB",
          "name":"B",
          "price":10.0
       },
       {
          "id":"productC",
          "name":"C",
          "price":5.99
       }
     ]
    }
    

限制

  • 当前不支持对象数组中对象的嵌套数组。 例如:

    {
    "products":[
      {
         "id":"productA",
         "name":"A",
         "price":20,
         "locations": [{"name": "Paris"}, {"name": "London"}]
      },
     ]
    }
    
  • 要使用测试模式测试收藏集,您需要使用代码视图模式。 目前,业务事件不支持代码视图模式。 您只能发送包含单个元素的集合。

一般程序

在此部分中,我们将使用以下JSON有效负载示例。 这是一个对象数组,其中的字段是一个简单的集合。

{
  "ctxt": {
    "products": [
      {
        "id": "productA",
        "name": "A",
        "price": 20.1,
        "color":"blue",
        "locations": [
          "Paris",
          "London"
        ]
      },
      {
        "id": "productB",
        "name": "B",
        "price": 10.99
      }
    ]
  }
}

您可以看到“products”是两个对象的数组。 您至少需要一个对象。

  1. 创建自定义操作。 请参阅此页

  2. Action parameters 部分,并粘贴JSON示例。 显示的结构是静态的:粘贴有效负载时,所有字段都被定义为常量。

  3. 如果需要,请调整字段类型。 集合支持以下字段类型:listString, listInteger, listDecimal, listBoolean, listDateTime, listDateTimeOnly, listDateOnly, listObject

    注意

    根据有效负载示例自动推断字段类型。

  4. 如果要动态传递对象,则需要将它们设置为变量。 在本例中,我们将“products”设置为变量。 对象中包含的所有对象字段都会自动设置为变量。

    注意

    有效负载示例的第一个对象用于定义字段。

  5. 对于每个字段,定义将在历程画布中显示的标签。

  6. 创建历程并添加您创建的自定义操作。 请参阅此页

  7. Action parameters 部分中,使用高级表达式编辑器定义数组参数(本例中的“products”)。

  8. 对于以下每个对象字段,从源XDM架构中键入相应的字段名称。 如果名称相同,则不需要。 在本例中,我们只需定义“产品ID”和“颜色”即可。

对于数组字段,您还可以使用高级表达式编辑器执行数据处理。 在以下示例中,我们使用 过滤器相交 函数:

特定案例

对于阵列的异构类型和阵列,使用listAny类型定义阵列。 您只能映射单个项目,但无法将数组更改为变量。

异源类型示例:

{
    "data_mixed-types": [
        "test",
        "test2",
        null,
        0
    ]
}

数组的示例:

{
    "data_multiple-arrays": [
        [
            "test",
            "test1",
            "test2"
        ]
    ]
}

相关主题

使用自定义操作

在此页面上