json - Shell Script jq 在变量中读取带有句点 (.) 的 json 键
问题描述
我有一些 json 数据,如下所示:
{"spark.master": "local"}
我将它存储在一个名为json_data
json_data='{"spark.master": "local"}'
并使用 jq shell 实用程序解析它。
如上所示,密钥包含句点 (.) 字符。如果我尝试使用 jq 直接读取它,它工作正常
$ json_data='{"spark.master": "local"}'
$ val=$(echo $json_data | jq .'"spark.master"')
$ echo $val
"local"
但是如果这个键存储在一个变量中,它就不起作用
$ key="spark.master"
$ val=$(echo $json_data | jq .'$key')
jq: error: syntax error, unexpected '$' (Unix shell quoting issues?) at <top-level>, line 1:
.$key
jq: error: try .["field"] instead of .field for unusually named fields at <top-level>, line 1:
.$key
jq: 2 compile errors
$ val=$(echo $json_data | jq ."$key")
$ echo $val
null
有人可以帮我确定这里出了什么问题吗?
解决方案
推荐阅读
- watson-discovery - 使用 Watson Discovery 工具的“文档无法索引”
- python - 我需要两个 python-flask 实例吗?
- python - 创建并附加到 SQLAlchemy 数据库表中的列表
- html - 根据右div的位置垂直对齐左div的文本
- apache - 如何将 URL 指向静态内容的不同地址并将其指向同一地址
- django - 更新方法不起作用 [DjangoRestFramework]
- sql - SQL - 删除重复项
- google-sheets - 使用 google sheet v4 api 作为复杂的计算器 api
- reactjs - 如何在 React 中重新定义组件?
- c# - 识别此压缩字节流