如何在jq中将嵌套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

我需要将此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.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字符串。

您可以在