syntax - 在将 JSON 转换为 CSV 时在 jq 中使用 JSONpath 语法的问题
问题描述
我正在尝试在某些条件下将此 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
推荐阅读
- ios - 无法将 XIB 加载到可重用的 TableViewCell 中
- android - @ActivityRetained 类的协程范围?
- python - 父类使用类方法时如何初始化子类?
- android - 苦苦挣扎的Android套件安装Qt
- discord.py - discord.py 将角色 id 放在 commands.has_any_role 上的名称上
- node.js - Nginx:上游过早关闭连接,同时从上游读取响应头
- python - 如何更改集合中的值?
- reactjs - 在开发中反应重定向但不在构建中
- javascript - JS在keydown上转到锚标记的位置
- php - 你能用 PDO 查询帮助我理解这个 PHP 代码吗?