在花了很多时间阅读文档,遵循一些教程和试错,我只是不能弄清楚;如何使用Azure数据工厂中的数据流将以下包含键对象的复杂对象转换为数组?
- 输入**
{
"headers": {
"Content-Length": 1234
},
"body": {
"00b50a39-8591-3db3-88f7-635e2ec5c65a": {
"id": "00b50a39-8591-3db3-88f7-635e2ec5c65a",
"name": "Example 1",
"date": "2023-02-09"
},
"0c206312-2348-391b-99f0-261323a94d95": {
"id": "0c206312-2348-391b-99f0-261323a94d95",
"name": "Example 2",
"date": "2023-02-09"
},
"0c82d1e4-a897-32f2-88db-6830a21b0a43": {
"id": "00b50a39-8591-3db3-88f7-635e2ec5c65a",
"name": "Example 3",
"date": "2023-02-09"
},
}
}
- 预期产出**
[
{
"id": "00b50a39-8591-3db3-88f7-635e2ec5c65a",
"name": "Example 1",
"date": "2023-02-09"
},
{
"id": "0c206312-2348-391b-99f0-261323a94d95",
"name": "Example 2",
"date": "2023-02-09"
},
{
"id": "00b50a39-8591-3db3-88f7-635e2ec5c65a",
"name": "Example 3",
"date": "2023-02-09"
}
]
1条答案
按热度按时间oxcyiej71#
在这种情况下,你可以尝试下面的方法作为一个解决方案。这将只在你的所有密钥的长度是相同的。
@substring(string(activity('Lookup1').output.value[0].body),2,sub(length(string(activity('Lookup1').output.value[0].body)),4))
将查找输出转换为字符串并存储在变量中。'},"'
在字符串变量上使用了split,并使用下面的表达式将其存储在一个数组变量中。@split(variables('res_str'),'},"')
它将给出如下所示的数组。@take(item(), 36)
@activity('Lookup1').output.value[0].body[item()]
如果要将上面的JSON存储到文件中,需要使用SQL中的
OPENJSON
,因为复制活动附加列只支持字符串类型,不支持数组类型。在拷贝活动源上使用SQL数据集,并在查询中提供以下SQL脚本。
在Sink中,给定一个JSON数据集,并选择Array of Objects作为文件模式。
执行管道,您将在一个文件中获得上面的数组。