2017-01-17 3 views
-1

Ich habe eine Notwendigkeit, verschiedene Nachrichtenformate in JSON und v.v. zu transformieren, z. XML zu JSON und dann JSON zu XML oder EDI zu JSON und JSON zu EDI.Datentransformation in Node.js, Best Practices?

Ich habe mehrere verschiedene XML-zu-JSON-Module angeschaut und sie scheinen hauptsächlich in eine direkte Konvertierung in ihr eigenes JSON- und/oder XML-Format und nicht in meine erforderliche XML (z. B. UBL 2.1) zu gelangen.

Ein einfacher geradeaus Weg zu gehen darüber ist, nur ein String-Variable zu verwenden:

let myXML = '<root><hdr>' + jsonIn.hdr + '</hdr>\r\n'; 
myXML += '<itm>' + jsonIn.item[0] + '</hdr></root>'; 

Die myXML Variablen allerdings recht groß sein werden. Bis zu 200 kB können derzeit aber in Zukunft noch größer werden.

Offensichtlich ist dies der schnellste und einfachste Weg, um die Outbound-Formate zu schaffen, aber sie nicht wirklich das Gefühl, rechts ein massives String-Variable erstellen ...

In Java I Stringbuilder verwenden würde, und es gibt eine npm für Knoten: https://www.npmjs.com/package/stringbuilder

Welchen Ansatz würden Sie als "Best Practice" -Ansatz betrachten?

+1

Was machen Sie mit dem transformierten Ergebnis? Das scheint ziemlich wichtig zu sein, um eine korrekte Lösung zu finden. –

+0

Entschuldigung, wenn ein wenig unklar ... Das transformierte Ergebnis wird entweder in eine AWS SQS-Warteschlange übertragen, um vom AWS API Gateway abgeholt oder als Datei in AWS S3 abgelegt zu werden, wo es von einem SFTP-Server aus zugänglich ist. – Anders

Antwort

0

In Java I Stringbuilder verwenden würde ...

Wenn das der Fall ist und so tun Sie am Ende brauchen, um mit einer einzigen Saite das Ergebnis, ein ziemlich normales Muster enthält, um am Ende ist die einzelnen Strings in einem Array aufzubauen, und dann Array#join verwenden, wenn Sie, dass eine große Abschlusskette zu erzeugen sind fertig:

let myXML = []; 
myXML.push('<root><hdr>' + jsonIn.hdr + '</hdr>\r\n'); 
myXML.push('<itm>' + jsonIn.item[0] + '</hdr></root>'); 
// ... 

// When you're ready for the big string: 
myXML = myXML.join(""); 

Wenn Sie am Ende eine große Zeichenfolge benötigen, nicht aber schreiben zu einer Datei usw., Schreiben, wie Sie gehen würden, würde tendenziell eine gute Lösung sein tion.

+0

Ok, danke, so ziemlich wie ich damals dachte ... Ich schreibe nicht in eine Datei, es wird als HTTP POST ausgegeben. – Anders