在 SnapLogic 中将数组转换为字符串

Turning Array Into String in SnapLogic

我有 SalesForce SOQL 快照的输出,它是这种格式的 JSON。

[
  {
    "QualifiedApiName": "Accelerator_Pack__c"
  },
  {
    "QualifiedApiName": "Access_Certifications__c"
  },
  {
    "QualifiedApiName": "Access_Requests__c"
  },
  {
    "QualifiedApiName": "Account_Cleansed__c"
  },
  {
    "QualifiedApiName": "Account_Contract_Status__c"
  }
]

我正在尝试获取这些值并将它们转换为一个字符串,其中的值用逗号分隔,就像这样,这样我就可以在另一个查询的 SELECT 子句中使用它。

Accelerator_Pack__c, Access_Certifications__c, Access_Requests__c, Account_Cleansed__c, Account_Contract_Status__c

根据文档,我的理解是 .toString() 会将数组转换为逗号分隔的字符串,但如附图所示,它什么也没做。有人有这方面的经验吗?

您需要汇总传入的文档。

Aggregate 快照与函数 CONCAT 结合使用。这将为您提供一个 | 分隔的连接字符串作为输出,如下所示。

Accelerator_Pack__c|Access_Certifications__c|Access_Requests__c|Account_Cleansed__c|Account_Contract_Status__c

然后您可以将 | 替换为 ,,例如 $concatenated_fields.split('|').join(',')$concatenated_fields.replace(/\|/g, ',')

下面是详细的配置说明

示例管道:

示例输入:

我把你在JSON Generator中提供的样本JSON用于测试。

聚合:

聚合结果:

你得到一个 | 分隔的连接字符串。

映射器表达式:

输出:

两个表达式给出相同的结果。

也可以直接使用数组函数来实现。请参阅以下可用于连接值的管道:

我使用 JSONGenerator 将您的示例数据作为输入。 然后我使用以“0”作为组大小的 GroupByN snap 来制定数组。

最后在映射器中你可以使用下面的表达式来连接:

jsonPath($, "$arrayAccom[*].QualifiedApiName").join(",")