我需要将此json转换为平面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
}
}
]
}
我尝试使用此JQ代码进行手动测试:
[。Data []。ID,.Data []。Marchio.ID,.Data []。Marchio.Codice,.Data []。Marchio.Descrizione,.Data []。Codifica.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"
我在数字上没有“。
每个json记录都需要一行一行的csv。 我该如何迭代?我需要能够给我带来类似结果的东西
[.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"
如何分隔记录?
答案 0 :(得分:2)
您想要以下内容:
.Data[] | [.ID, .Marchio.ID , .Marchio.Codice, .Marchio.Descrizione , .Codifica.CodEan] | @csv
也就是说,对于Data
数组的每个元素,创建一个包含相关数据的数组,每个结果数组对应于输出CSV中的一行。
我想您知道这一点,但是您将希望使用-r
/ --raw-output
标志来避免将输出格式化为JSON字符串。