Reputation: 391
I need to convert this json into a flat csv
{
"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
}
}
]
}
I tried this JQ code to test manually:
[.Data[].ID, .Data[].Marchio.ID , .Data[].Marchio.Codice, .Data[].Marchio.Descrizione , .Data[].Codifica.CodEan] | @csv
but the result is
[
35058,
35078,
28129,
1,
1,
1,
"APP",
"APP",
"APP",
"Apple",
"Apple",
"Apple",
"0190199077621",
"0190199062627",
"0190198496492"
]
I tried
.Data | [map(.ID, .Marchio.ID, .Marchio.Codice )][] | @csv
but the result is a single line
35058,1,"APP",35078,1,"APP",28129,1,"APP"
and I don't have the " on the numbers.
I need a csv with a line for each json record. How can I iterate? I need something that give me a result like
[.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]
expected result:
"35058","1","APP","Apple","0190199077621"
"35078","1","APP","Apple","0190199062627"
"28129","1","APP","Apple","0190198496492"
------------------------------------------
edit: I tried
.Data | [map( (.ID |tostring) , (.Marchio.ID|tostring) , (.Marchio.Codice|tostring) )] [] | @csv
and I get
"35058","1","APP","35078","1","APP","28129","1","APP"
how can I separate records?
Upvotes: 1
Views: 98
Reputation: 24812
Looks like you want the following :
.Data[] | [.ID, .Marchio.ID , .Marchio.Codice, .Marchio.Descrizione , .Codifica.CodEan] | @csv
That is, for each element of the Data
array, create an array containing the relevant pieces of data, each resulting array corresponding to a row in the output CSV.
I guess you know that, but you will want to use the -r
/--raw-output
flag to avoid formatting the output as JSON Strings.
Upvotes: 3