如何在jq中将嵌套json转换为平面csv
我需要将此json转换为平面csv如何在jq中将嵌套json转换为平面csv,json,jq,Json,Jq,我需要将此json转换为平面csv { "Pagination": null, "Data": [ { "ID": 35058, "Marchio": { "ID": 1, "Codice": "APP", "Descrizione": "Apple", "Immagine": "http
{
"Pagination": null,
"Data": [
{
"ID": 35058,
"Marchio": {
"ID": 1,
"Codice": "APP",
"Descrizione": "Apple",
"Immagine": "https://api.attiva.com/Articoli/LogoMarchio/APPLE.jpg/",
"URL": "http://www.apple.com"
},
"Codifica": {
"CodEan": "0190199077621",
"CodCli": "a1234",
"Descrizione": "IPAD AIR 10.5\" WI-FI 64GB GRIGIO SIDERALE",
"Specifiche": "Display Retina Multi-Touch retroilluminato ",
"SchedaTecnica": "scheda tecnica",
"Confezione": "",
"CodAtv": "APP4472P",
"CodFor": "MUUJ2TY/A"
},
"Prezzi": {
"ListinoNetto": 461.19,
"ScontoDettaglio": {
"SC1": 12,
"SC2": 0,
"SC3": 0,
"SC4": 0
},
"ScontoRivenditore": 12,
"ScontatoRivenditoreNetto": 405.8472,
"PromoNetto": null,
"PromoScadenza": null,
"PromoRisparmio": 0,
"ApplicatoRivenditore": 405.8472,
"EndUser": 569,
"SIAE": 5.2
},
"IVA": {
"Codice": "RLC",
"Descrizione": "R.C. ex art.17, c.6 let. c",
"Aliquota": 0
},
"Categoria": {
"Codice": "273",
"Descrizione": "iPad - Pro - Mini"
},
"SottoCategoria": {
"Codice": "279",
"Descrizione": "IPAD WI-FI"
},
"ClassificazioneEDIEL": {
"Codice": ""
},
"Disponibilita": {
"Presente": 0,
"Futura": 100,
"QtaMax": true,
"Semaforo": 1
},
"Immagini": {
"Principale": "https://api.attiva.com/Articoli/Immagine/immagineschedaprodotto35058",
"Gallery": null
},
"Informazioni": {
"DataInserimento": "2019-03-18T00:00:00",
"Dimensioni": {
"Peso": 0.92,
"Larghezza": 185,
"Altezza": 263,
"Profondita": 61
},
"Bundle": false,
"Promo": false,
"Novita": false,
"Professional": false,
"Licenza": false,
"Progetto": false,
"InEvidenza": false,
"EndOfLife": false,
"Pdf": null
},
"Ordinabile": {
"Abilitato": true,
"Minimo": 1,
"Multiplo": 1
},
"Accessori": [
{
"Articoli": [
20117,
26838,
26839,
26840,
27034,
35089,
35090,
35091,
35092
],
"TipoID": 1,
"TipoDescrizione": "Accessori"
}
],
"Compatibili": null,
"CTO": {
"Tipo": 0,
"BaseID": null,
"Configurazioni": null
},
"Bundle": {
"ListaCorrelati": null,
"Componenti": null
}
},
{
"ID": 35078,
"Marchio": {
"ID": 1,
"Codice": "APP",
"Descrizione": "Apple",
"Immagine": "https://api.attiva.com/Articoli/LogoMarchio/APPLE.jpg/",
"URL": "http://www.apple.com"
},
"Codifica": {
"CodEan": "0190199062627",
"CodCli": "",
"Descrizione": "IPAD MINI WI-FI 64GB ARGENTO",
"Specifiche": "Display Multi-Touch retroilluminato LED da 7,9",
"SchedaTecnica": "---",
"CodAtv": "APP4487P",
"CodFor": "MUQX2TY/A"
},
"Prezzi": {
"ListinoNetto": 371.03,
"ScontoDettaglio": {
"SC1": 9,
"SC2": 0,
"SC3": 0,
"SC4": 0
},
"ScontoRivenditore": 9,
"ScontatoRivenditoreNetto": 337.6373,
"PromoNetto": null,
"PromoScadenza": null,
"PromoRisparmio": 0,
"ApplicatoRivenditore": 337.6373,
"EndUser": 459,
"SIAE": 5.2
},
"IVA": {
"Codice": "RLC",
"Descrizione": "R.C. ex art.17, c.6 let. c",
"Aliquota": 0
},
"Categoria": {
"Codice": "273",
"Descrizione": "iPad - Pro - Mini"
},
"SottoCategoria": {
"Codice": "837",
"Descrizione": "IPAD MINI WI-FI"
},
"ClassificazioneEDIEL": {
"Codice": ""
},
"Disponibilita": {
"Presente": 100,
"Futura": 100,
"QtaMax": true,
"Semaforo": 2
},
"Immagini": {
"Principale": "https://api.attiva.com/Articoli/Immagine/immagineschedaprodotto35078",
"Gallery": null
},
"Informazioni": {
"DataInserimento": "2019-03-18T00:00:00",
"Dimensioni": {
"Peso": 0.66,
"Larghezza": 145,
"Altezza": 216,
"Profondita": 60
},
"Bundle": false,
"Promo": false,
"Novita": false,
"Professional": false,
"Licenza": false,
"Progetto": false,
"InEvidenza": false,
"EndOfLife": false,
"Pdf": null
},
"Ordinabile": {
"Abilitato": true,
"Minimo": 1,
"Multiplo": 1
},
"Accessori": [
{
"Articoli": [
20117,
35093,
35094,
35095,
35096,
35119,
35122,
35123
],
"TipoID": 1,
"TipoDescrizione": "Accessori"
}
],
"Compatibili": null,
"CTO": {
"Tipo": 0,
"BaseID": null,
"Configurazioni": null
},
"Bundle": {
"ListaCorrelati": null,
"Componenti": null
}
},
{
"ID": 28129,
"Marchio": {
"ID": 1,
"Codice": "APP",
"Descrizione": "Apple",
"Immagine": "https://api.attiva.com/Articoli/LogoMarchio/APPLE.jpg/",
"URL": "http://www.apple.com"
},
"Codifica": {
"CodEan": "0190198496492",
"CodCli": "",
"Descrizione": "CUSTODIA APPLE IN SILICONE PER IPHONE 8 / 7 PLUS - BLU NOTTE",
"Specifiche": "Progettata da Apple",
"DescrizioneEstesa": "---",
"SchedaTecnica": "",
"Confezione": "",
"CodAtv": "APP3851A",
"CodFor": "MQGY2ZM/A"
},
"Prezzi": {
"ListinoNetto": 31,
"ScontoDettaglio": {
"SC1": 16,
"SC2": 0,
"SC3": 0,
"SC4": 0
},
"ScontoRivenditore": 16,
"ScontatoRivenditoreNetto": 26.04,
"PromoNetto": null,
"PromoScadenza": null,
"PromoRisparmio": 0,
"ApplicatoRivenditore": 26.04,
"EndUser": 45,
"SIAE": 0
},
"IVA": {
"Codice": "22",
"Descrizione": "IVA 22%",
"Aliquota": 22
},
"Categoria": {
"Codice": "181",
"Descrizione": "Accessori iPhone"
},
"SottoCategoria": {
"Codice": "184",
"Descrizione": "Custodie"
},
"ClassificazioneEDIEL": {
"Codice": "07040209"
},
"Disponibilita": {
"Presente": 34,
"Futura": 34,
"QtaMax": false,
"Semaforo": 2
},
"Immagini": {
"Principale": "https://api.attiva.com/Articoli/Immagine/immagineschedaprodotto28129",
"Gallery": [
"https://api.attiva.com/Articoli/Immagine/68466",
"https://api.attiva.com/Articoli/Immagine/68467"
]
},
"Informazioni": {
"DataInserimento": "2017-09-13T00:00:00",
"Dimensioni": {
"Peso": 0.04,
"Larghezza": 115,
"Altezza": 185,
"Profondita": 90
},
"Bundle": false,
"Promo": false,
"Novita": false,
"Professional": false,
"Licenza": false,
"Progetto": false,
"InEvidenza": false,
"EndOfLife": false,
"Pdf": null
},
"Ordinabile": {
"Abilitato": true,
"Minimo": 1,
"Multiplo": 1
},
"Accessori": null,
"Compatibili": [
28163,
28164,
28165,
28166,
28167,
28168,
30396,
30397
],
"CTO": {
"Tipo": 0,
"BaseID": null,
"Configurazioni": null
},
"Bundle": {
"ListaCorrelati": null,
"Componenti": null
}
}
]
}
我尝试手动测试此JQ代码:
[.Data[].ID、.Data[].Marchio.ID、.Data[].Marchio.Codice、.Data[].Marchio.descripione、.Data[].codica.CodEan]@csv
但结果是
[
35058,
35078,
28129,
1,
1,
1,
"APP",
"APP",
"APP",
"Apple",
"Apple",
"Apple",
"0190199077621",
"0190199062627",
"0190198496492"
]
我试过了
.Data | [map(.ID, .Marchio.ID, .Marchio.Codice )][] | @csv
但结果只有一行
35058,1,"APP",35078,1,"APP",28129,1,"APP"
而我的数字上没有“数字”
我需要一个csv,每个json记录有一行。
我该如何迭代?我需要一些能给我一个结果的东西,比如
[.Data[0].ID, .Data[0].Marchio.ID , .Data[0].Marchio.Codice, .Data[0].Marchio.Descrizione , .Data[0].Codifica.CodEan] ,
[.Data[1].ID, .Data[1].Marchio.ID , .Data[1].Marchio.Codice, .Data[1].Marchio.Descrizione , .Data[1].Codifica.CodEan] ,
...
[.Data[n].ID, .Data[0].Marchio.ID , .Data[n].Marchio.Codice, .Data[n].Marchio.Descrizione , .Data[n].Codifica.CodEan]
预期结果:
"35058","1","APP","Apple","0190199077621"
"35078","1","APP","Apple","0190199062627"
"28129","1","APP","Apple","0190198496492"
------------------------------------------
编辑:我试过了
.Data | [map( (.ID |tostring) , (.Marchio.ID|tostring) , (.Marchio.Codice|tostring) )] [] | @csv
我得到
"35058","1","APP","35078","1","APP","28129","1","APP"
如何分离记录?看起来您需要以下内容:
.Data[] | [.ID, .Marchio.ID , .Marchio.Codice, .Marchio.Descrizione , .Codifica.CodEan] | @csv
也就是说,对于数据
数组的每个元素,创建一个包含相关数据段的数组,每个结果数组对应于输出CSV中的一行
我想您知道这一点,但您可能希望使用-r
/--raw output
标志,以避免将输出格式化为JSON字符串。您可以在