如何在jq

时间:2019-07-30 13:07:05

标签: json jq

我需要将此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"

如何分隔记录?

1 个答案:

答案 0 :(得分:2)

您想要以下内容:

.Data[] | [.ID, .Marchio.ID , .Marchio.Codice, .Marchio.Descrizione , .Codifica.CodEan] | @csv

也就是说,对于Data数组的每个元素,创建一个包含相关数据的数组,每个结果数组对应于输出CSV中的一行。

我想您知道这一点,但是您将希望使用-r / --raw-output标志来避免将输出格式化为JSON字符串。