无法解析Azure Data Factory ADF中的JSON列表

时间:2019-07-19 21:08:49

标签: json azure-data-factory

在我的datafactory管道中,我有一个网络活动,该活动在JSON响应下方给出。在下一个存储过程活动中,我无法解析输出参数。我尝试了几种方法。

我已经在网络活动中设置了内容类型application/json

示例JSON:

Output
{
    "Response": "[{\"Message\":\"Number of barcode(s) found:1\",\"Status\":\"Success\",\"CCS Office\":[{\"Name\":\"Woodstock\",\"CCS Description\":null,\"BranchType\":\"Sub CFS Office\",\"Status\":\"Active\",\"Circle\":\"NJ\"}]}]"
}

对于存储过程活动中的参数:

@json(first(activity('Web1').output.Response))

输出-System.Collections.Generic.List`1 [System.Object]

@json(activity('Web1').output.Response[0])

输出-无法评估,因为无法选择属性'0'。类型'String'的值不支持属性选择

@json(activity('Web1').output.Response.Message)

输出-无法评估,因为无法选择属性“消息”。类型'String'的值不支持属性选择

1 个答案:

答案 0 :(得分:0)

这是我所做的: 我创建了一个新管道,并全部使用您的“输出”创建了一个“对象”类型的参数:

{     "Response": "[{\"Message\":\"Number of barcode(s) found:1\",\"Status\":\"Success\",\"CCS Office\":[{\"Name\":\"Woodstock\",\"CCS Description\":null,\"BranchType\":\"Sub CFS Office\",\"Status\":\"Active\",\"Circle\":\"NJ\"}]}]" }

我创建了一个变量和setVariable活动。变量是字符串类型。我使用的动态表达式是:

@{json(pipeline().parameters.output.response)[0]}

让我分解并解释。使用{花括号}是必要的,因为变量是字符串类型。您可能不需要/不需要它们。

json(....)

是必需的,因为“响应”值的数据类型保留为字符串。是否为字符串是正确的行为是另一回事。通过将字符串转换为json,我现在可以完成最后的工作。

[0]

现在可以工作了,因为数据工厂将内容视为对象而不是字符串文字。这种转换似乎也已应用于嵌套的内容,因为如果没有封装{curly braces}转换为字符串,由于变量的类型为string,那么我将从setVariable活动中得到类型错误。

整个管道代码:

{
"name": "pipeline11",
"properties": {
    "activities": [
        {
            "name": "Set Variable1",
            "type": "SetVariable",
            "dependsOn": [],
            "userProperties": [],
            "typeProperties": {
                "variableName": "thing",
                "value": {
                    "value": "@{json(pipeline().parameters.output.response)[0]}",
                    "type": "Expression"
                }
            }
        }
    ],
    "parameters": {
        "output": {
            "type": "object",
            "defaultValue": {
                "Response": "[{\"Message\":\"Number of barcode(s) found:1\",\"Status\":\"Success\",\"CCS Office\":[{\"Name\":\"Woodstock\",\"CCS Description\":null,\"BranchType\":\"Sub CFS Office\",\"Status\":\"Active\",\"Circle\":\"NJ\"}]}]"
            }
        }
    },
    "variables": {
        "thing": {
            "type": "String"
        }
    },
    "annotations": []
}

}