Môi trường: JQ 1.5, Windows 64 bit.Xử lý JSON của mảng trong mảng với jq
Tôi có JSON sau:
{
"unique": 1924,
"coordinates": [
{
"time": "2015-01-25T00:00:01.683",
"xyz": [
{
"z": 4,
"y": 2,
"x": 1,
"id": 99
},
{
"z": 9,
"y": 9,
"x": 8,
"id": 100
},
{
"z": 9,
"y": 6,
"x": 10,
"id": 101
}
]
},
{
"time": "2015-01-25T00:00:02.790",
"xyz": [
{
"z": 0,
"y": 3,
"x": 7,
"id": 99
},
{
"z": 4,
"y": 6,
"x": 2,
"id": 100
},
{
"z": 2,
"y": 9,
"x": 51,
"id": 101
}
]
}
]
}
Và muốn chuyển đổi nó sang định dạng CSV này với JQ:
unique,time,id,x,y,z
1924,"2015-01-25T00:00:01.683",99,1,2,4
1924,"2015-01-25T00:00:01.683",100,8,9,9
(và vân vân)
Tôi đã thử một vài mọi thứ, chẳng hạn như:
jq -r '{unique: .unique, coordinates: .coordinates[].xyz[] | [.id, .x, .y, .z], time: .coordinates.[].time} | flatten | @csv'
đã cho tôi JSON mong muốn của tôi, nhưng nhân với mọi id, x, y và z (tức là mỗi dòng duy nhất xuất hiện bốn lần - mỗi dòng cho id, x, y, z).
Gán một số để mảng, chẳng hạn như
jq -r '{unique: .unique, coordinates: .coordinates[0].xyz[] | [.id, .x, .y, .z], time: .coordinates.[0].time} | flatten | @csv'
mang lại cho tôi những chỉ số đầu tiên của mảng coordinates
, nhưng tôi muốn tất cả trong số họ, một cách tự nhiên.
Đối với ngôn ngữ nào? Javascript? –
Với jq (http://stedolan.github.io/jq/) – innocentunremarkable
Mmm. Yêu cầu xây dựng rất gần đây, ở đó; Tôi vẫn còn trên 1,4. Nhưng sau đó, đó là cách của các tính năng sáng bóng ... –