JSONATA中如何使用变量作为键从对象中取值?
正确实现方法
你试的写法里,.[$test]本身是对的,但不生效大概率是变量定义的语法错了,或者环境里变量没正确传递。分两种常见场景说明:
1. 用jq处理JSON(最常见场景)
jq里变量赋值不用:=,要用单等号=,正确的取值写法就是.[$test]:
# 脚本内部定义变量并取值的示例 $test = "Account Name"; .[$test]
如果是命令行传参,得用--arg来传递变量,不能直接在jq表达式里硬写赋值:
# 命令行执行示例,input.json是你的目标JSON文件 jq --arg test "Account Name" '.[$test]' input.json
2. 用JSONPath查询
如果是用JSONPath(比如某些编程语言里的JSON查询库),变量引用语法要看具体工具:
- 比如在Python的
jsonpath-ng库中,要先把变量绑定到查询表达式:from jsonpath_ng import parse test = "Account Name" json_data = {"Account Name": "张三"} expr = parse(f"$['{test}']") result = [match.value for match in expr.find(json_data)] - 部分JSONPath实现支持直接用
$[var]格式,但需要提前注入变量值。
内容的提问来源于stack exchange,提问作者Vishnupriya
相关产品推荐
相关产品推荐

