Azure Data Factory动态内容引用带@符号JSON键的方法
ADF特殊字符属性名访问方案
ADF动态表达式的点(.)属性访问语法仅支持无特殊字符的常规标识符属性,属性名包含@、空格、.、-等特殊字符时会触发解析错误。你遇到的@odata识别失败,是因为@是ADF动态表达式的默认起始标识,直接跟在点号后会被判定为新表达式的开头,不会被识别为属性名的一部分。
无需对@做额外转义,使用ADF原生支持的方括号索引器语法即可访问带特殊字符的属性,适配两种常见JSON结构的写法如下:
- 若JSON层级为
firstRow -> odata对象 -> @odata对象 -> nextLink属性,修正后表达式:
@if( contains( activity('Get API Page').output.firstRow.odata['@odata'].nextLink, 'nextRecordPosition' ), string( activity('Get API Page').output.firstRow.odata['@odata'].nextLink ), 'Done' )
- 若
@odata.nextLink本身是完整键名(.为键名组成部分,是OData接口的标准返回结构),直接将完整键名放入方括号:
@if( contains( activity('Get API Page').output.firstRow['@odata.nextLink'], 'nextRecordPosition' ), string( activity('Get API Page').output.firstRow['@odata.nextLink'] ), 'Done' )
调试提示:可先单独运行查找活动,在运行输出中确认
firstRow的真实JSON层级,再对应调整方括号索引位置即可。方括号内的字符串会被直接识别为属性名,不会触发@的表达式解析逻辑。
内容的提问来源于stack exchange,提问作者BjörnBogers
相关产品推荐
相关产品推荐

