ADF中字符串参数解析为JSON失败:json()函数无法正常工作求助
问题原因分析
- 首次报错:你将参数类型改为string,但实际传入的参数值仍是Object类型(可能是参数转换不彻底,或默认值未改为字符串),
@json()函数要求输入为字符串/XML,因此触发类型不匹配错误。 - 二次报错:给默认值加转义引号的方式错误,导致
@json()解析后得到的不是合法JSON对象,而是纯字符串,无法通过属性选择器访问子字段。
可行的参数修改方案
- 设置标准JSON字符串参数值
- 将原嵌套JSON对象转为标准转义字符串,比如原Object
{"api_args":{"startDate":"2024-01-01"}}需改为:"{\"api_args\":{\"startDate\":\"2024-01-01\"}}"(ADF中字符串双引号需用双反斜杠转义)。 - 在ADF参数设置页,将
my_args类型设为string,默认值填入上述转义后的JSON字符串。
- 将原嵌套JSON对象转为标准转义字符串,比如原Object
- 正确使用解析表达式
- 确认参数值为合法JSON字符串后,使用
@json(pipeline().parameters.my_args).api_args.startDate或@json(pipeline().parameters.my_args)['api_args']['startDate']访问子字段,此时json()返回Object类型,支持属性选择。
- 确认参数值为合法JSON字符串后,使用
- 验证参数类型与解析结果
- 用ADF表达式测试工具验证:输入
@typeof(pipeline().parameters.my_args),确认返回String;再测试@json(pipeline().parameters.my_args),确认解析为Object类型。
- 用ADF表达式测试工具验证:输入
相关官方文档要点
- ADF管道参数支持string、int、bool、array、object等类型,string类型需传入符合格式的字符串值。
json()函数:仅接受字符串或XML输入,将其转换为Object类型,输入不合法则报错。- ADF字符串转义规则:字符串中的双引号需用反斜杠转义,界面输入时需使用双反斜杠确保转义生效。
内容的提问来源于stack exchange,提问作者minnie692
相关产品推荐
相关产品推荐

