我需要创造一个
csv
来自a的报告
JSON
以下结构的文件(尽我所能简化):
{
"data": [
{
"id": "123",
"foo": {
"item": {
"value": "foo_good",
"bar_id": "1"
}
},
"bar": {
"item": {
"id": "1",
"value": "bar_value_1a"
}
},
"var": {
"item": {
"value": "var_value_1a",
"bar_id": "1"
}
}
},
{
"id": "456",
"foo": {
"item": [
{
"value": "foo_bad",
"bar_id": "1"
},
{
"value": "foo_good",
"bar_id": "2"
},
{
"value": "foo_good",
"bar_id": "2"
},
{
"value": "foo_bad",
"bar_id": "3"
},
{
"value": "foo_good",
"bar_id": "4"
}
]
},
"bar": {
"item": [
{
"id": "1",
"value": "bar_value_2a"
},
{
"id": "2",
"value": "bar_value_2b"
},
{
"id": "3",
"value": "bar_value_2c"
},
{
"id": "4",
"value": "bar_value_2d"
}
]
},
"var": {
"item": [
{
"value": "var_value_2a",
"bar_id": "1"
},
{
"value": "var_value_2b",
"bar_id": "2"
},
{
"value": "var_value_2c",
"bar_id": "3"
},
{
"value": "var_value_2d",
"bar_id": "4"
}
]
}
}
]
}
数据结构:
-
foo.item
和
var.item
连接到
bar.item
bar_id
-
一个或多个
指向一个
条形图项目
-
食品
指向同一个
条形图项目
foo.item.value
-
正好一个
变量项
指向一
-
所有项目都按
酒吧id
-
格式是
不一致的
.
如果只有一个项,则为对象,否则为数组(适用于
食品
和
以及)
-
我被这种格式困住了
-
全部处理
data
物体
-
条形图项目
确实如此
有任何对应的
有价值的
foo_bad
-
.id, .bar.item.value, .var.item.value
我的尝试:
jq
我当前使用的脚本丢弃多个
条形图项目
等等,仅仅是对真实数据的估计:
.data[]
| .foo.item |= if type=="array" then .[0] else . end
| .bar.item |= if type=="array" then .[0] else . end
| .var.item |= if type=="array" then .[0] else . end
| select(.foo.item.value != "foo_bad")
| [.id,.bar.item.value,.var.item.value]
| @csv
"123","bar_value_1a","var_value_1a"
期望输出:
"123","bar_value_1a","var_value_1a"
"456","bar_value_2b","var_value_2b"
"456","bar_value_2d","var_value_2d"
我更喜欢用
jq公司
尽管我不坚持。