无法分析Azure数据工厂ADF中的JSON列表
在我的datafactory管道中,我有一个web活动,它给出了下面的JSON响应。在下一个存储过程活动中,我无法解析输出参数。我尝试了几种方法 我在web活动中设置了内容类型无法分析Azure数据工厂ADF中的JSON列表,json,azure-data-factory,Json,Azure Data Factory,在我的datafactory管道中,我有一个web活动,它给出了下面的JSON响应。在下一个存储过程活动中,我无法解析输出参数。我尝试了几种方法 我在web活动中设置了内容类型application/json 示例JSON: Output { "Response": "[{\"Message\":\"Number of barcode(s) found:1\",\"Status\":\"Success\",\"CCS Office\":[{\"Name\":\"Woodstock\",\
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”。“字符串”类型的值不支持属性选择
@json(activity('Web1').output.Response.Message)
输出-无法计算,因为无法选择属性“Message”。“String”类型的值不支持属性选择。以下是我所做的:
@json(activity('Web1').output.Response.Message)
我创建了一个新管道,并使用整个“输出”创建了一个“object”类型的参数:
{ "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]}
让我详细解释一下。{大括号}是必需的,因为变量的类型是string。你可能不想要/不需要它们
json(....)
是必需的,因为“response”值的数据类型保留为字符串。它是否是字符串是正确的行为是一个不同的讨论。通过将字符串转换为json,我现在可以完成最后一部分
[0]
现在可以工作了,因为数据工厂将内容视为对象,而不是字符串文本。这种转换似乎也应用于嵌套内容,因为如果没有封装{curly braces}来转换为字符串,我将从我的setVariable活动中得到一个类型错误,因为变量的类型是string
整个管道代码:
{
"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": []
}
}你好。您是否尝试过
.output.value[0]。消息
,.output.value[0]。响应。消息
或.output.value[0]。响应
?我们正在使用这种格式,它在我们的管道中工作。@Praetorian1995我累了,但不工作。错误-activity('Web1')。输出。值[0]。无法计算消息“”,因为属性'value'不存在,可用属性为'Response''活动('Web1')。输出。值[0]。无法计算Response。消息“”,因为属性'value'不存在,可用属性为'Response',感谢您的详细解释。这真的很有帮助。谢谢你的反馈:)