jq - 过滤带有句点的属性名称
问题描述
如何在 MacOS/Linux 上访问名称中包含句点的 JSON 属性的值?
例如,我有一个 JSON 对象,它的根属性名称包含一个句点。例如:
{
"foo.bar": {
"one": 1,
"two": "2",
"three": {
"a": "3a",
"b": "3b"
}
}
}
在jqplay.org上,过滤器."foo.bar"
成功提取了属性的值:
{
"one": 1,
"two": "2",
"three": {
"a": "3a",
"b": "3b"
}
}
但是,在 MacOS 和 Linux (jq v1.5) 上,相同的输入和过滤器(即jq ."foo.bar" file.json
不产生输出)。
如果我在过滤器中添加括号(即.["foo.bar"]
),我会得到以下信息:
{
"foo.bar": {
"one": 1,
"two": "2",
"three": {
"a": "3a",
"b": "3b"
}
}
}
{
"one": 1,
"two": "2",
"three": {
"a": "3a",
"b": "3b"
}
}
1
"2"
{
"a": "3a",
"b": "3b"
}
"3a"
"3b"
如何在 MacOS/Linux 上复制 jqplay.org 的行为,以便可以访问名称中带有句点的属性?
解决方案
好的,想通了...我需要将整个过滤器用单引号括起来:
jq '."foo.bar"' file.json
推荐阅读
- kubernetes - Istio 安装后 Prometheus Operator 失败
- python - 在 Pandas 中操作数据框的数据
- javascript - V8 中的压缩指针实现与 JVM 的压缩 Oops 有何不同?
- python - 如何将图像添加到 Flask?
- javascript - 左对齐饼图 (amCharts)
- mysql - 如何在mysql中存储加密货币余额?
- c++ - 在 Windows 10 上安装 GMP 以在代码块中工作
- javascript - Nivo 响应式折线图仅响应变宽,不响应变窄
- sql-server - 防止脚本在未执行的块中生成错误?
- python-3.x - 如何按字典中键的值对字典进行排序?