Ich versuche, Daten in einem JSON-Anfrage-Antwort-Szenario für eine REST-API zu manipulieren.Wie native Json in WSO2 ESB zu manipulieren?
Um mein Problem zu vereinfachen, nehmen wir an, ich möchte alle 'b' Zeichen durch ein 'd' innerhalb der Nutzlast ersetzen.
Gibt es eine Möglichkeit für mich, nativ auf den JSON-Daten zu arbeiten und die Daten nicht zuerst in XML zu konvertieren?
Ich versuche, einen benutzerdefinierten Klassenmediator zu erstellen, um meine OutSequence zu setzen, aber da ich nur Zugriff auf den MessageContext habe, der die Payload als XML behandelt, stoße ich auf Probleme.
Das Problem ist, dass der JSON nicht zu und von XML umgewandelt werden kann.
Dieser Teil innerhalb seiner Struktur hat:
"Destination": {
"name": "abc",
"type": "ST",
"$": "\n"
}
Das „$“ Eigenschaft gilt json, aber da WSO2 ESB immer Daten als XML verarbeiten innerhalb seiner Message, es diese Eigenschaft, um Tags nicht verwandeln kann offensichtlich, so, wenn ich
MessageContext.getEnvelope().getBody()
in meiner Klasse Vermittler tun, die Antwort ist:
<Destination>
<name>abc</name>
<type>ST</type>
</Destination>
Die Eigenschaft $ fehlt.
Ich verwende die Nachricht Bauer: org.apache.synapse.commons.json.JsonStreamBuilder und Formatierer: org.apache.synapse.commons.json.JsonStreamFormatter
Um im Normalfall durch den Inhalt passieren (andernfalls würde es im XML-zu-JSON-Verarbeitungsschritt fehlschlagen. Aber es muss einen Weg für mich geben, die Daten als natives JSON (oder als ein nativer String?) Zu manipulieren, vielleicht den InputStream zu erreichen und die Daten davon zu manipulieren? Aber ich kann keine Möglichkeit finden, über den Nachrichtenkontext zum InputStream zu gelangen.