如何在Azure Data Factory中从SOAP响应提取JSON数组
从SOAP响应提取嵌套JSON数组的ADF实现步骤
针对你遇到的问题,可通过ADF Data Flow的一系列操作完成提取,具体步骤如下:
1. 定位目标字段
在Data Flow的源组件后,使用**选择(Select)**组件,保留soap:Envelope.soap:Body.WebServiceXMLResponse.WebServiceXMLResult._value_字段(根据你的JSON结构路径调整,确保能准确获取到嵌套的_value_字符串)。
2. 解码转义引号
添加**派生列(Derived Column)**组件,创建新列decoded_str,使用替换函数处理转义的引号:
replace(_value_, '"', '"')
执行后,decoded_str会得到标准的JSON字符串:
{"messages":[{"Sequence":"11","ScientificName":"Bos Taurus"},{"Sequence":"12","ScientificName":"Accipitridae"},{"Sequence":"13","ScientificName":"Corvus splendens"}]}
3. 解析JSON字符串为对象
继续添加派生列组件,创建parsed_json列,用json()函数将字符串解析为JSON对象:
json(decoded_str)
4. 提取messages数组
再次使用派生列或选择组件,提取parsed_json.messages,得到你需要的数组结构:
parsed_json.messages
5. 输出目标JSON
- 若要直接输出数组格式的JSON文件:在Sink组件中选择JSON格式,设置文件模式为
Array of objects,将提取到的数组字段作为输出列。 - 若要先扁平化数组为单条记录:添加**扁平化(Flatten)**组件,选择
messages数组作为扁平化列,拆分后每条数组元素变为单独行,再输出为JSON(如需合并为数组,可在Sink中设置对应模式)。
额外注意事项
- 若
_value_字符串包含多余空格,可先用trim(_value_)处理后再替换引号,避免JSON解析失败。 - 确保源组件的路径配置正确,能正常读取到嵌套的
_value_字段(可通过数据预览验证)。
内容的提问来源于stack exchange,提问作者Guagua77
相关产品推荐
相关产品推荐

