2016-07-29 26 views
0

Ich habe eine CSV wie folgt aus:Nested CSV - Mule DataWeave

data1,data2,data3;dataa;datab;datac;datax,datay,dataz 
data1,data2,data3;dataa;datab;datac;datax,datay,dataz 
data1,data2,data3;dataa;datab;datac;datax,datay,dataz 

I spliter verwenden, um die Aufzeichnungen Zeile für Zeile zu verarbeiten, weiter verwende ich splitBy "" in dataweave den Datensatz zu einer Karte zu konvertieren. Aber wie kann ich eine weitere Split-Ebene für ";" ? SplitBy erlaubt nicht mehrere Trennzeichen, so dass der CSV-Typ in DataWeave enthalten ist.

Letztlich möchte ich eine JSON wie folgt aus:

{ 
    "1":"data1", 
    "2":"data2", 
    "3":{ 
     "a":"dataa", 
     "b":"datab", 
     "c":"datac" 
    }, 
    "x":"datax", 
    "y":"datay", 
    "z":"dataz " 
} 

Irgendwelche Gedanken?

+0

Der erwartete JSON Ergebnis ist ungültig. Hast du so gemeint? { "1": "data1" "2": "data2" "3": { "a": "DATAA" "B": "DATAB" "c": "DATAC" }, "x": "DATAX" "y": "datay" "z": "Dataz" } –

+0

Ups, mein Tippfehler. Ja, du hast recht . – gnanagurus

Antwort

1

Ich möchte beobachten, dass Ihr JSON-Beispiel eine schlechte Struktur hat! In diesem JSON ist das vierte Element ein Objekt und es hat keinen Schlüssel, nur Wert ... Zuerst sollten Sie Ihr Ende JSON validieren. Beispiel Ihres gültigen JSON: enter image description here

Wenn u Ihr JSON validieren, ich werde versuchen, in convering Ihre CSV-Daten an die JSON zu helfen.

+0

Ich habe die Daten korrigiert, können Sie jetzt einen Blick darauf werfen? – gnanagurus

3

Versuchen Sie, die folgenden DataWeave Code:

%dw 1.0 
%output application/json 
--- 
payload map { 
    "1": $[0], 
    "2": $[1], 
    "3": using (detail = $[2] splitBy ";") { 
     a: detail[1], 
     b: detail[2], 
     c: detail[3] 
    }, 
    x: $[3], 
    y: $[4], 
    z: $[5] 
} 

Hinweise:

  • ich die Eingabedaten geändert datac und datax zu trennen. Ersetzen Sie den ; Charakter mit , zB: ...;datab;datac,datax,...
  • Ich benutze Datei Anschluss die CSV-Datei zu lesen, und es direkt verarbeiten in DataWeave Transformator (nicht verwenden, um einen Splitter)
+0

Ich benutze hauptsächlich Splitter, weil es die Datensätze Zeile für Zeile aufteilt. Weiter bearbeite ich den Datensatz mit Dataweave. Aber kann ich nach Ihrer Empfehlung dasselbe erreichen? Kann Datenweben für Streaming sorgen? Grundsätzlich ist die Dateigröße in meinem Anwendungsfall nicht sicher – gnanagurus