将 JSON 转换为 CSV 时在 jq 中使用 JSONpath 语法的问题

Issue using JSONpath syntax in jq while converting JSON to CSV

我正在尝试根据某些条件将此 JSON 转换为 CSV。而我的条件是“类型”应该是“次要”。它应该显示具有次要类型的字段。使用以下 cmd 时出错。

jq -r '["color","category","type"], ([?type=="secondary"].colors | [.color, .category, .type]) | @csv' test.json > test.csv
    {
      "colors": [
        {
          "color": "black",
          "category": "hue",
          "type": "primary",
          "code": {
            "rgba": [255,255,255,1],
            "hex": "#000"
          }
        },
        {
          "color": "white",
          "category": "value",
          "code": {
            "rgba": [0,0,0,1],
            "hex": "#FFF"
          }
        },
        {
          "color": "red",
          "category": "hue",
          "type": "primary",
          "code": {
            "rgba": [255,0,0,1],
            "hex": "#FF0"
          }
        },
        {
          "color": "blue",
          "category": "hue",
          "type": "primary",
          "code": {
            "rgba": [0,0,255,1],
            "hex": "#00F"
          }
        },
        {
          "color": "yellow",
          "category": "hue",
          "type": "primary",
          "code": {
            "rgba": [255,255,0,1],
            "hex": "#FF0"
          }
        },
        {
          "color": "green",
          "category": "hue",
          "type": "secondary",
          "code": {
            "rgba": [0,255,0,1],
            "hex": "#0F0"
          }
        }
      ]
    }

您所用的似乎是 JSONPath 语法 (https://github.com/json-path/JsonPath),不适用于 jq,它有自己的 DSL 语法

对于这种特定情况下的过滤条件,您需要 select 语句

[ "color", "category", "type" ], 
( .colors[] | select( .type == "secondary" ) | [ .color, .category, .type] ) | @csv

jqplay demo