将 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
我正在尝试根据某些条件将此 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