2017-06-12 4 views
1

Ich verwende tatsächlich JQ1.5 unter einer Windows 10 Umgebung, um mehrere JSON-Dateien für einen Import in eine MS SQL-Datenbank zu transformieren. Ein Teil der Daten ist in UNIX timestamp formatiert und ich muss diese Daten in ISO 8601 Format umwandeln.JQ: Umwandeln von UNIX Timestamp in Datetime

folgenden Befehl verwende ich eigentlich für die Transformation der Daten:

jq ' 
[ 
    { nid, title, nights, zone: .zones[0].title} + 
    (.sails[] | { sails_nid: .nid, arrival, departure }) + 
    (.sails[].cabins[] | 
    { cabintype: .cabinType.kindName, 
     cabinid: .cabinType.nid, 
     catalogPrice, 
     discountPrice, 
     discountPercentage, 
     currency 
    } 
) 
] 
' C:\Import\dreamlines_details.json > C:\Import\import_sails.json 

An- und Abreise sind die Daten, die formated in Unix Zeit.

Daten:

[ 
    { 
    "nid": 434508, 
    "title": "Die schönsten Orte unserer Welt", 
    "nights": 121, 
    "zone": "Weltreise", 
    "sails_nid": 434516, 
    "arrival": 1525644000, 
    "departure": 1515193200, 
    "cabintype": "Innenkabine", 
    "cabinid": 379723, 
    "catalogPrice": 17879, 
    "discountPrice": 9519, 
    "discountPercentage": 0.4675876726886291, 
    "currency": "EUR" 
    }, 
    { 
    "nid": 434508, 
    "title": "Die schönsten Orte unserer Welt", 
    "nights": 121, 
    "zone": "Weltreise", 
    "sails_nid": 434516, 
    "arrival": 1525644000, 
    "departure": 1515193200, 
    "cabintype": "Innenkabine", 
    "cabinid": 379730, 
    "catalogPrice": 18599, 
    "discountPrice": 10239, 
    "discountPercentage": 0.44948653153395346, 
    "currency": "EUR" 
    } 
] 

I mit eingebautem experimentiert in Operator "todate" und "strftime". Aber bekomme nur Parsing-Fehler.

+0

Sie den Eingang json Fragment mit entscheidenden Daten veröffentlichen sollte – RomanPerekhrest

+0

Hallo @RomanPerekhrest hinzugefügt, um die Daten – TimoC

+1

Ihr Code und Beispiel json stimmen nicht überein. Bitte denken Sie daran, Ihren Code und das Beispiel zu vereinfachen, indem Sie dem [MCVE] (https://stackoverflow.com/help/mcve) – Thor

Antwort

1

Verwenden todateiso8601 Funktion:

jq '.[].arrival |= todateiso8601 | .[].departure |= todateiso8601' C:\Import\import_sails.json 

Der Ausgang (für die Eingabe-Fragment):

[ 
    { 
    "nid": 434508, 
    "title": "Die schönsten Orte unserer Welt", 
    "nights": 121, 
    "zone": "Weltreise", 
    "sails_nid": 434516, 
    "arrival": "2018-05-06T22:00:00Z", 
    "departure": "2018-01-05T23:00:00Z", 
    "cabintype": "Innenkabine", 
    "cabinid": 379723, 
    "catalogPrice": 17879, 
    "discountPrice": 9519, 
    "discountPercentage": 0.4675876726886291, 
    "currency": "EUR" 
    }, 
    { 
    "nid": 434508, 
    "title": "Die schönsten Orte unserer Welt", 
    "nights": 121, 
    "zone": "Weltreise", 
    "sails_nid": 434516, 
    "arrival": "2018-05-06T22:00:00Z", 
    "departure": "2018-01-05T23:00:00Z", 
    "cabintype": "Innenkabine", 
    "cabinid": 379730, 
    "catalogPrice": 18599, 
    "discountPrice": 10239, 
    "discountPercentage": 0.44948653153395346, 
    "currency": "EUR" 
    } 
] 
+0

folgen. Vielen Dank! – TimoC

+0

@TimoC, gern geschehen – RomanPerekhrest

Verwandte Themen