我使用的是第三方REST API,我将设备的序列号传递给它,它返回一系列值。这个API返回一个JSON,其中一个节点以序列号命名,因此我必须以这种方式来处理它以检索值
activity('Web1').output.root.SERIALXXXXX.values.variousArrays
字符串
如何在表达式生成器中动态更改节点名称?是否有一些“评估”功能,允许建立节点名称?
如果我找不到任何答案,我会把第三方的rest API封装在我自己做的一个azure函数中,以一个更可用和更稳定的结构重建数据,但我想避免每次我被第三方工作卡住时都做这种工作。我搜索了Microsoft Learn,但我甚至不知道如何提出这个问题。
JSon结构如下所示
{
"historicData": {
"success": true,
"params": {
"value": [
{
"SERIAL123": {
"Array1": [
0.0,
...
0.0
],
"Array2": [
0,
...
0
],
"timestamp": [
"2023-07-18T00:03:02Z",
...
"2023-07-18T02:21:42Z"
]
},
{
"SERIAL456": {
"Array1": [
0.0,
...
0.0
],
"Array2": [
0,
...
0
],
"timestamp": [
"2023-07-18T00:03:02Z",
...
"2023-07-18T02:21:42Z"
]
}
}
]
}
}
}
型
2条答案
按热度按时间sz81bmfz1#
我尝试了你的场景,在一个blob中使用了一个JSON示例。
字符串
为了在ADF中获取JSON,我在上面使用了lookup活动。
要访问数组,首先需要获取
SERIALXXXXX
键的列表。为此,首先我将上面的JSON转换为字符串,并使用下面的表达式在""SERIAL"
上使用split,并使用set变量activity存储在数组变量中。型
当您使用Web Activity时,请使用Web Activity表达式
@activity('Web1').output.root
而不是查找表达式。这将给予一个如下的数组。
的数据
现在,将这个数组交给ForEach,但跳过第一个元素(
@skip(variables('split_with_serial'),1)
),因为我们不需要它。在Foreach中,使用将变量活动追加到数组并使用以下表达式。
型
的
这将给予键的数组。这里,为了显示输出,我将上面的数组存储在另一个数组中。
的
要检索JSON中的值,请将此数组交给ForEach并在其中使用以下表达式。
型
mccptt672#
经过一些返工,我已经解决了如下:
1.字符串中转换的JSon结构
1.将序列号替换为静态描述
1.使用JSON()函数重新转换JSON中的字符串
这样,我就能够使用静态强结构来导航JSON。