Convertir XML en JSON à l'aide de Mule Custom Transformer
-
21-12-2019 - |
Question
Bonjour, je travaille avec Mule Studio et je souhaite créer un transformateur personnalisé qui convertira XML en Json à l'aide de la bibliothèque Google Gson.Donc, dans ce cas, je dois ajouter un composant Java Transformer et je dois écrire un code personnalisé pour cela.Mais le problème auquel je suis confronté est que je remplace la méthode qui accepte le paramètre d'entrée en tant qu'objet, c'est la seule façon, à mon avis, ou est-ce une autre méthode qui acceptera le paramètre d'entrée en tant que chaîne XML.Veuillez partager un code pour le rendre fonctionnel.
public class Transfomer extends AbstractTransformer
{
protected Object doTransform(Object src, String enc) throws TransformerException {
// TODO Auto-generated method stub
return null;
}
}
La solution
Jetez un œil à un transformateur existant : https://github.com/mulesoft/mule/blob/mule-3.x/modules/xml/src/main/java/org/mule/module/xml/transformer/XmlPrettyPrinter.java
- Voyez comment dans le constructeur les types de sources acceptés sont enregistrés, comme avec :
registerSourceType(DataTypeFactory.create(org.dom4j.Document.class));
- Voyez comment dans le
doTransform
méthode le génériqueObject src
est converti.
Autres conseils
Vous pouvez utiliser le transformateur XML vers JSON de la palette Mule vers les flux Mule.
<json:xml-to-json-transformer doc:name="XML to JSON"/>
OU
Utilisez la transformation DataWeave :
<dw:transform-message doc:name="Transform Message">
<dw:set-payload><![CDATA[%dw 1.0
%output application/json
---
payload]]></dw:set-payload>
</dw:transform-message>
La définition de la sortie Dataweave comme application/json le fait automatiquement.Cependant, lorsque vous effectuez du JSON en XML, vous devrez peut-être vous assurer que le JSON peut être converti en formulaire XML avec l'élément racine et les éléments membres à l'intérieur.