【问题标题】:jq error (at <stdin>:25): Cannot index string with string "data1"jq 错误(在 <stdin>:25):无法使用字符串“data1”索引字符串
【发布时间】:2021-12-12 09:28:50
【问题描述】:

我有一个 json 文件,其数据如下:

{
  "0cef7017-e6af-4c92-9e7c-4db1d7afc733": {
    "Show": [
      "TEST1",
      "TEST2"
    ],
    "data1": 12345,
    "data2": 1234,
    "name": "Amit",
    "Ref": "group_1",
    "data3": 123
  },
  "metadata": "ThRsmflXIMA5LVlOI8vJ0OoSokw=",
  "eef75ad4-c733-42ac-9c55-dd5aa2d69fad": {
    "Show": [
      "TEST3",
      "TEST4"
    ],
    "data1": 12345,
    "data2": 1234,
    "name": "Anuj",
    "Ref": "group_2",
    "data3": 123
  }
}

我想要这样的输出:

12345,Amit
12345,Anuj

我尝试了以下命令:

cat AV | jq  '.[]|."data1",."name"'
12345
Amit
jq: error (at <stdin>:25): Cannot index string with string "data1"

它没有给出预期的输出。似乎它没有完全解析为 data1 字符串没有出现在元数据中

【问题讨论】:

    标签: json jq


    【解决方案1】:

    你可以使用

    cat AV |jq -r 'to_entries[] | select(.key != "metadata") |.value |"\(.data1), \(.name)"'
    

    删除键值为metadata 的元素。由于metadata 引发错误,这是最外层的键之一,没有键名为data1name 的子元素

    Demo

    【讨论】:

    • | "\(.data1), \(.name)" 就足够了;如果使用 jq 1.5 或更高版本,另一种选择是:| [.data1, .name] | join(",")
    • 没错,谢谢@peak
    猜你喜欢
    • 1970-01-01
    • 2021-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-14
    • 1970-01-01
    • 2020-06-30
    • 2023-04-04
    相关资源
    最近更新 更多