Cette page s'applique à Apigee et à Apigee hybrid.
Consultez la documentation d'Apigee Edge.
Quoi
Cette règle convertit les messages du format XML (Extensible Markup Language) au format JSON (JavaScript Object Notation), vous offrant ainsi plusieurs options pour contrôler la conversion des messages.
En supposant que votre objectif soit de convertir une réponse au format XML en réponse au format JSON, la règle sera associée à un flux de réponses (par exemple, Response/ProxyEndpoint/PostFlow).
Cette règle est une règle standard qui peut être déployée sur n'importe quel type d'environnement. Pour en savoir plus sur les types de règles et la disponibilité avec chaque type d'environnement, consultez la section Types de règles.
À propos
Dans un scénario de médiation type, une règle JSONtoXML sur le flux de requêtes entrantes est souvent associée à une règle XMLtoJSON sur le flux de réponses sortantes. En combinant des règles de cette manière, une API JSON peut être exposée pour les services de backend qui ne sont compatibles nativement qu'avec le format XML.
Pour les scénarios dans lesquels les API sont consommées par diverses applications clientes pouvant nécessiter JSON ou XML, le format de réponse peut être défini de manière dynamique en configurant l'exécution conditionnelle de règles JSONtoXML et XMLtoJSON. Pour voir une mise en œuvre de ce scénario, consultez la page Variables de flux et conditions.
Exemples
Pour obtenir des informations détaillées sur la conversion entre JSON et XML, consultez cet article.
Convertir une réponse
<XMLToJSON name="ConvertToJSON"> <Options> </Options> <OutputVariable>response</OutputVariable> <Source>response</Source> </XMLToJSON>
Cette configuration, qui est la configuration minimale requise pour la conversion de XML en JSON, prend un message de réponse au format XML en tant que source, puis crée un message au format JSON renseigné dans la OutputVariable response
. Apigee utilise automatiquement le contenu de cette variable comme message pour la prochaine étape du traitement.
Documentation de référence des éléments
Vous trouverez ci-dessous les éléments et les attributs que vous pouvez configurer sur cette règle.
<XMLToJSON async="false" continueOnError="false" enabled="true" name="XML-to-JSON-1"> <DisplayName>XML to JSON 1</DisplayName> <Source>response</Source> <OutputVariable>response</OutputVariable> <Options> <RecognizeNumber>true</RecognizeNumber> <RecognizeBoolean>true</RecognizeBoolean> <RecognizeNull>true</RecognizeNull> <NullValue>NULL</NullValue> <NamespaceBlockName>#namespaces</NamespaceBlockName> <DefaultNamespaceNodeName>&</DefaultNamespaceNodeName> <NamespaceSeparator>***</NamespaceSeparator> <TextAlwaysAsProperty>true</TextAlwaysAsProperty> <TextNodeName>TEXT</TextNodeName> <AttributeBlockName>FOO_BLOCK</AttributeBlockName> <AttributePrefix>BAR_</AttributePrefix> <OutputPrefix>PREFIX_</OutputPrefix> <OutputSuffix>_SUFFIX</OutputSuffix> <StripLevels>2</StripLevels> <TreatAsArray> <Path unwrap="true">teachers/teacher/studentnames/name</Path> </TreatAsArray> </Options> <!-- Use Options or Format, not both --> <Format>yahoo</Format> </XMLToJSON>
Attributs <XMLtoJSON>
<XMLtoJSON async="false" continueOnError="false" enabled="true" name="XML-to-JSON-1">
Le tableau suivant décrit les attributs communs à tous les éléments parents des règles :
Attribut | Description | Par défaut | Presence |
---|---|---|---|
name |
Nom interne de la règle. La valeur de l'attribut Vous pouvez également utiliser l'élément |
N/A | Obligatoire |
continueOnError |
Définissez sur Définissez sur |
false | Facultatif |
enabled |
Définissez sur Définissez sur |
true | Facultatif |
async |
Cet attribut est obsolète. |
false | Obsolète |
Élément <DisplayName>
Utilisez-le, en plus de l'attribut name
, pour appliquer un libellé à la règle dans l'éditeur de proxys de l'interface de gestion en utilisant un nom différent, en langage naturel.
<DisplayName>Policy Display Name</DisplayName>
Par défaut |
N/A Si vous omettez cet élément, la valeur de l'attribut |
---|---|
Presence | Facultatif |
Type | Chaîne |
Élément <Source>
Variable spécifiant le message XML que vous souhaitez convertir au format JSON.
L'en-tête HTTP Content-Type du message source doit être défini sur application/xml
, sinon la règle n'est pas appliquée.
Si <Source>
n'est pas défini, il est traité comme message
(qui renvoie request
lorsque la règle est associée à un flux de requête ou response
lorsque la règle est associée à un flux de réponse).
Si la variable source ne peut pas être résolue ou est résolue en un type qui n'est pas un message, la règle génère une erreur.
<Source>response</Source>
Par défaut | Valeur de l'élément Source |
---|---|
Presence | Facultatif |
Type | Message |
Élément <OutputVariable>
Indique l'emplacement où stocker la sortie de la conversion du format XML au format JSON. En règle générale, cet élément n'est pas inclus dans la configuration de la règle.
Apigee analyse la charge utile du message XML spécifié dans Source
, la convertit au format JSON, stocke le résultat dans la charge utile de OutputVariable
et définit l'en-tête HTTP Content-type du message OutputVariable
à application/json
.
Si OutputVariable
n'est pas spécifié, la valeur de Source
est utilisée par défaut. Par exemple, si la source
correspond à response
, la valeur par défaut de OutputVariable
est response
.
<OutputVariable>response</OutputVariable>
Par défaut | le message spécifié dans Source |
---|---|
Presence | Facultatif |
Type | Message |
<Options>
Les options vous permettent de contrôler la conversion du format XML au format JSON. Utilisez le groupe <Options>
pour ajouter des paramètres de conversion spécifiques, ou l'élément <Format>
, qui vous permet de référencer un modèle d'options prédéfinies. Vous ne pouvez pas utiliser à la fois <Options>
et <Format>
.
<Options>
est requis si <Format>
n'est pas utilisé.
Élément <RecognizeNumber>
Si la valeur est "true", les champs numériques de la charge utile XML conservent leur format d'origine.
<RecognizeNumber>true</RecognizeNumber>
Prenons l'exemple XML suivant :
<a> <b>100</b> <c>value</c> </a>
Si RecognizeNumber
a la valeur true
, la règle la convertit en :
{ "a": { "b": 100, "c": "value" } }
Si RecognizeNumber
a la valeur false
, la règle la convertit en :
{ "a": { "b": "100", "c": "value" } }
Par défaut | false |
---|---|
Presence | Facultatif |
Type | Booléen |
<RecognizeBoolean> element
Permet à la conversion de conserver les valeurs booléennes "true" et "false" plutôt que de les transformer en chaînes.
<RecognizeBoolean>true</RecognizeBoolean>
Pour l'exemple XML suivant :
<a> <b>true</b> <c>value</c> </a>
Si RecognizeBoolean
a la valeur true
, la règle la convertit en :
{ "a": { "b": true, "c": "value" } }
Si RecognizeBoolean
a la valeur false
, la règle la convertit en :
{ "a": { "b": "true", "c": "value" } }
Par défaut | false |
---|---|
Presence | Facultatif |
Type | Booléen |
Élément <RecognizeNull>
Permet de convertir des valeurs vides en valeurs nulles.
<RecognizeNull>true</RecognizeNull>
Pour l'exemple XML suivant :
<a> <b></b> <c>value</c> </a>
Si la valeur de RecognizeNull
est true
et qu'il n'y a pas d'option NullValue
, l'élément XML est converti comme suit :
{ "a": { "b": null, "c": "value" } }
Si la valeur de RecognizeNull
est false
, l'élément XML est converti comme suit :
{ "a": { "b": {}, "c": "value" } }
Par défaut | false |
---|---|
Presence | Facultatif |
Type | Booléen |
Élément <NullValue>
Indique la valeur à laquelle les valeurs nulles reconnues dans le message source doivent être converties. La valeur par défaut est null
. Cette option n'est effective que si la valeur de RecognizeNull
est "true".
<NullValue>not-present</NullValue>
Pour l'exemple XML suivant :
<a> <b></b> <c>value</c> </a>
Si la valeur de RecognizeNull
est true
et que le champ NullValue
n'est pas spécifié, l'élément XML est converti comme suit :
{ "a": { "b": null, "c": "value" } }
Si la valeur de RecognizeNull
est true
et que la valeur de NullValue
est not-present
, l'élément XML est converti comme suit :
{ "a": { "b": "not-present", "c": "value" } }
Par défaut | null |
---|---|
Presence | Facultatif |
Type | Chaîne |
Options d'espace de noms
Par défaut, cette règle omet les espaces de noms XML dans le fichier JSON généré. Pour spécifier que les espaces de noms du document XML doivent être traduits dans le fichier JSON généré, utilisez ces éléments ensemble.
<NamespaceBlockName>#namespaces</NamespaceBlockName> <DefaultNamespaceNodeName>&</DefaultNamespaceNodeName> <NamespaceSeparator>***</NamespaceSeparator>
Prenons l'exemple XML suivant :
<a xmlns="http://ns.com" xmlns:ns1="http://ns1.com"> <ns1:b>value</ns1:b> </a>
Si NamespaceSeparator
n'est pas spécifié, la structure JSON suivante est générée :
{ "a": { "b": "value" } }
Si les éléments NamespaceBlockName
, DefaultNamespaceNodeName
et NamespaceSeparator
sont spécifiés respectivement en tant que #namespaces
, &
et ***
, la structure JSON suivante est générée :
{ "a": { "#namespaces": { "&": "http://ns.com", "ns1": "http://ns1.com" }, "ns1***b": "value" } }
Par défaut | Aucune. Si <NamespaceBlockName> n'est pas spécifié, la règle génère un fichier JSON de sortie qui ne fait référence à aucun espace de noms XML, que le message source fasse référence à des espaces de noms ou pas. |
---|---|
Presence | Facultatif Toutefois, si vous spécifiez <NamespaceBlockName> , vous devez également spécifier les deux autres éléments. |
Type | Chaînes |
Options de texte
Utilisez ces éléments ensemble.
<TextAlwaysAsProperty>true|false</TextAlwaysAsProperty> <TextNodeName>TEXT</TextNodeName>
Lorsque la règle rencontre un élément XML qui ne contient qu'un seul nœud de texte en tant qu'enfant, la règle traduit le contenu textuel de cet élément XML en une propriété du hachage JSON.
Lorsque la règle rencontre un élément XML contenant plusieurs enfants de contenu mixte, ces options vous permettent de contrôler la sortie JSON de n'importe quel nœud de texte enfant.
Prenons l'exemple de la configuration de règle suivante :
<XMLToJSON name='XMLToJSON-1'> <Options> <TextAlwaysAsProperty>???</TextAlwaysAsProperty> <TextNodeName>#text</TextNodeName> </Options> </XMLToJSON>
Pour les entrées XML données, la règle génère ces sorties, selon que TextAlwaysAsProperty
est true
ou false
:
Entrée XML | Sortie JSON | |
---|---|---|
quand TextAlwaysAsProperty est false |
quand TextAlwaysAsProperty est true |
|
<a>value1</a> |
{ "a": "value1" } |
{ "a": { "#text": "value1" } } |
<a>value1 <b>value2</b> </a> |
{ "a": { "#text": "value1\n", "b": "value2" } } |
{ "a": { "#text": "value1\n", "b": { "#text": "value2" } } } |
Par défaut | <TextAlwaysAsProperty> : false<TextNodeName> : chaîne vide |
---|---|
Presence | Facultatif |
Type | <TextAlwaysAsProperty> : booléen<TextNodeName> : chaîne |
Options d'attribut
Ensemble, ces éléments vous permettent de regrouper les valeurs d'attributs dans un bloc JSON et d'ajouter des préfixes aux noms d'attributs.
<AttributeBlockName>FOO_BLOCK</AttributeBlockName> <AttributePrefix>BAR_</AttributePrefix>
Prenons l'exemple XML suivant :
<a attrib1="value1" attrib2="value2"/>
Si les attributs (AttributeBlockName
et AttributePrefix
) sont spécifiés tels qu'ils sont définis dans l'exemple de règle XMLtoJSON, la structure JSON suivante est générée :
{ "a": { "FOO_BLOCK": { "BAR_attrib1": "value1", "BAR_attrib2": "value2" } } }
Si seul AttributeBlockName
est spécifié, la structure JSON suivante est générée :
{ "a": { "FOO_BLOCK": { "attrib1": "value1", "attrib2": "value2" } } }
Si seul AttributePrefix
est spécifié, la structure JSON suivante est générée :
{ "a": { "BAR_attrib1": "value1", "BAR_attrib2": "value2" } }
Si aucun de ces éléments n'est spécifié, la structure JSON suivante est générée :
{ "a": { "attrib1": "value1", "attrib2": "value2" } }
Par défaut | Aucun |
---|---|
Presence | Facultatif |
Type | Chaîne |
Éléments <OutputPrefix> et <OutputSuffix>
Utilisez ces éléments ensemble pour appliquer un préfixe et/ou un suffixe au fichier JSON généré.
<OutputPrefix>PREFIX_</OutputPrefix> <OutputSuffix>_SUFFIX</OutputSuffix>
Prenons l'exemple XML suivant :
<a>value</a>
Supposons que la configuration des règles soit la suivante :
<XMLToJSON name='XMLToJSON-4'> <Options> <OutputPrefix>{ "result": </OutputPrefix> <OutputSuffix>}</OutputSuffix> </Options> </XMLToJSON>
La structure JSON suivante est générée :
{ "result": { "a": "value" } }
Vous pouvez omettre l'une des valeurs suivantes, ou les deux : OutputPrefix
et OutputSuffix
.
L'utilisation de ces éléments peut générer du code JSON non valide. Par exemple, utilisez cette configuration de règle :
<XMLToJSON name='XMLToJSON-4'> <Options> <OutputPrefix>PREFIX_</OutputPrefix> </Options> </XMLToJSON>
La règle génère les éléments suivants, qui ne sont pas des données JSON valides :
PREFIX_{ "a" : "value" }
Si la configuration ne spécifie ni OutputPrefix
, ni OutputSuffix
, la règle génère la structure JSON suivante :
{ "a": "value" }
Par défaut | Voir exemples ci-dessus. |
---|---|
Presence | Facultatif |
Type | Chaîne |
Élément <StripLevels>
<Options> <StripLevels>4</StripLevels> </Options>
Parfois, les charges utiles XML, telles que SOAP, comportent de nombreux niveaux parents que vous ne souhaitez pas inclure dans le fichier JSON converti. Voici un exemple de réponse SOAP contenant de nombreux niveaux :
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/Schemata-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <soap:Body> <GetCityWeatherByZIPResponse xmlns="http://ws.cdyne.com/WeatherWS/"> <GetCityWeatherByZIPResult> <State>CO</State> <City>Denver</City> <Description>Sunny</Description> <Temperature>62</Temperature> </GetCityWeatherByZIPResult> </GetCityWeatherByZIPResponse> </soap:Body> </soap:Envelope>
Il y a quatre niveaux avant d'accéder aux niveaux State, City, Description, et Temperature.
Sans <StripLevels>
, la réponse JSON convertie ressemblerait à ceci :
{ "Envelope" : { "Body" : { "GetCityWeatherByZIPResponse" : { "GetCityWeatherByZIPResult" : { "State" : "CO", "City" : "Denver", "Description" : "Sunny", "Temperature" : "62" } } } } }
Si vous souhaitez supprimer ces quatre premiers niveaux dans la réponse JSON, vous devez définir <StripLevels>4</StripLevels>
, ce qui vous donnera le message JSON suivant :
{ "State" : "CO", "City" : "Denver", "Description" : "Sunny", "Temperature" : "62" }
Vous pouvez supprimer des niveaux jusqu'au premier élément contenant plusieurs enfants. Qu'entendons-nous par là ? Examinons un exemple JSON plus complexe :
{ "Envelope" : { "Body" : { "GetCityForecastByZIPResponse" : { "GetCityForecastByZIPResult" : { "ResponseText" : "City Found", "ForecastResult" : { "Forecast" : [ { "ProbabilityOfPrecipiation" : { "Nighttime" : "00", "Daytime" : 10 } ...
Dans cet exemple, le niveau 3 est GetCityForecastByZIPResponse
, qui n'a qu'un seul enfant. Ainsi, si vous utilisez <StripLevels>3</StripLevels>
(vous supprimez les trois premiers niveaux), le contenu JSON se présente comme suit :
{ "GetCityForecastByZIPResult" : { "ResponseText" : "City Found", "ForecastResult" : { "Forecast" : [ { "ProbabilityOfPrecipiation" : { "Nighttime" : "00", "Daytime" : 10 } ...
Notez que GetCityForecastByZIPResult
comporte plusieurs enfants. Comme il s'agit du premier élément contenant plusieurs enfants, vous pouvez supprimer ce dernier niveau à l'aide de <StripLevels>4</StripLevels>
, ce qui vous donnera le message JSON suivant :
{ "ResponseText" : "City Found", "ForecastResult" : { "Forecast" : [ { "ProbabilityOfPrecipiation" : { "Nighttime" : "00", "Daytime" : 10 } ...
Comme le niveau 4 est le premier niveau contenant plusieurs enfants, vous ne pouvez pas supprimer des niveaux inférieurs à celui-ci. Si vous définissez le niveau de suppression sur 5, 6, 7 et ainsi de suite, vous obtiendrez la réponse ci-dessus.
Par défaut | 0 (aucune suppression de niveau) |
---|---|
Presence | Facultatif |
Type | Entier |
Élément <TreatAsArray>/<Path>
<Options> <TreatAsArray> <Path unwrap="true">teachers/teacher/studentnames/name</Path> </TreatAsArray> </Options>
Cette combinaison d'éléments vous permet de vous assurer que les valeurs d'un document XML sont toujours traduites en un tableau JSON. Cela peut être utile lorsque le nombre d'éléments enfants varie pour différentes charges utiles. Le comportement par défaut d'Apigee consiste à convertir plusieurs éléments enfants du même nom en tableau JSON et des éléments enfants uniques en primitif JSON. L'option TreatAsArray
vous permet de vous assurer que les éléments enfants sont toujours traduits en tableau JSON.
L'utilisation de TreatAsArray
peut améliorer la structure du code ultérieur qui gère la sortie, car les données du tableau sont renvoyées de la même manière à chaque fois. Par exemple, l'évaluation d'un chemin JSONPath de $.teachers.teacher.studentnames.name[0]
renvoie la valeur de prénom de manière cohérente, que le fichier XML d'origine contienne un ou plusieurs éléments name
.
Revenons en arrière et observons le comportement par défaut de la règle XMLtoJSON, puis découvrons comment contrôler la sortie à l'aide de <TreatAsArray>/<Path>
.
Lorsqu'un document XML contient un élément avec plusieurs occurrences (ce qui peut se produire lorsque le schéma XML spécifie maxOccurs='unbounded'
pour l'élément), la règle XML vers JSON place automatiquement ces valeurs dans un tableau. Par exemple, le bloc XML suivant :
<teacher> <name>teacherA</name> <studentnames> <name>student1</name> <name>student2</name> </studentnames> </teacher>
...est automatiquement converti dans le message JSON suivant sans configuration particulière de la règle :
{ "teachers" : { "teacher" : { "name" : "teacherA", "studentnames" : { "name" : [ "student1", "student2" ] } } } }
Notez que les deux noms d'élèves sont contenus dans un tableau.
Toutefois, si un seul élève apparaît dans le document XML, la règle XMLtoJSON traite automatiquement la valeur comme une chaîne unique et non comme un tableau de chaînes, comme illustré dans l'exemple suivant :
{ "teachers" : { "teacher" : { "name" : "teacherA", "studentnames" : { "name" : "student1" } } } }
Dans les exemples précédents, des données similaires ont été converties différemment : une fois en tant que tableau, une autre en tant que chaîne unique. L'élément <TreatAsArray>/<Path>
vous permet de contrôler la sortie pour vous assurer que les noms des élèves sont toujours convertis dans un tableau, même s'il n'y a qu'une seule valeur. Pour ce faire, identifiez le chemin d'accès à l'élément dont vous souhaitez convertir les valeurs dans un tableau, comme suit :
<Options> <TreatAsArray> <Path>teachers/teacher/studentnames/name</Path> </TreatAsArray> </Options>
La configuration ci-dessus génère le message JSON comme suit :
{ "teachers" : { "teacher" : { "name" : "teacherA", "studentnames" : { "name" : ["student1"] } } } }
Notez que "student1" se trouve désormais dans un tableau. Désormais, qu'il y ait un ou plusieurs élèves, vous pouvez les récupérer à partir d'un tableau JSON dans votre code en utilisant le JSONPath suivant : $.teachers.teacher.studentnames.name[0]
L'élément <Path>
comporte également un attribut unwrap
, qui est expliqué dans la section suivante.
Par défaut | N/A |
---|---|
Presence | Facultatif |
Type | Chaîne |
Attributs
<Options> <TreatAsArray> <Path unwrap="true">teachers/teacher/studentnames/name</Path> </TreatAsArray> </Options>
Attribut | Description | Presence | Type |
---|---|---|---|
unwrap |
Valeur par défaut : false Supprime l'élément de la sortie JSON. Utilisez cet attribut pour simplifier ou aplatir ("désencapsuler") le message JSON, ce qui raccourcit également le JSONPath nécessaire pour récupérer les valeurs. Par exemple, au lieu d'utiliser Voici un exemple JSON : { "teachers" : { "teacher" : { "name" : "teacherA", "studentnames" : { "name" : [ "student1", "student2" ]}... Dans cet exemple, vous pouvez affirmer que l'élément <TreatAsArray> <Path unwrap="true">teachers/teacher</Path> <Path unwrap="true">teachers/teacher/studentnames/name</Path> </TreatAsArray> L'attribut { "teachers" : [{ "name" : "teacherA", "studentnames" : ["student1","student2"] }]... Étant donné que l'élément |
Facultatif | Booléen |
Pour obtenir plus d'exemples et un tutoriel présentant les fonctionnalités, consultez cet article de la communauté Google Cloud.
<Format>
Ce format vous permet de contrôler la conversion du format XML au format JSON. Saisissez le nom d'un modèle prédéfini contenant une combinaison spécifique d'éléments d'options décrits dans cet article.
Les formats prédéfinis sont les suivants : xml.com
, yahoo
, google
et badgerFish
.
Utilisez l'élément <Format>
ou le groupe <Options>
. Vous ne pouvez pas utiliser à la fois <Format>
et <Options>
.
Vous trouverez ci-dessous les définitions de format de chaque modèle prédéfini.
xml.com
<RecognizeNull>true</RecognizeNull> <TextNodeName>#text</TextNodeName> <AttributePrefix>@</AttributePrefix>
yahoo
<RecognizeNumber>true</RecognizeNumber> <TextNodeName>content</TextNodeName>
<TextNodeName>$t</TextNodeName> <NamespaceSeparator>$</NamespaceSeparator> <TextAlwaysAsProperty>true</TextAlwaysAsProperty>
badgerFish
<TextNodeName>$</TextNodeName> <TextAlwaysAsProperty>true</TextAlwaysAsProperty> <AttributePrefix>@</AttributePrefix> <NamespaceSeparator>:</NamespaceSeparator> <NamespaceBlockName>@xmlns</NamespaceBlockName> <DefaultNamespaceNodeName>$</DefaultNamespaceNodeName>
Syntaxe des éléments :
<Format>yahoo</Format>
Par défaut | (aucun) |
---|---|
Valeurs valides | Choisissez l'une des options suivantes :xml.com , yahoo , google , badgerFish |
Presence | Facultatif, mais obligatoire si <Options> n'est pas utilisé. |
Type | Chaîne |
Schémas
Informations de référence sur les erreurs
Cette section décrit les codes d'erreur et les messages d'erreur renvoyés et les variables d'erreur définies par Apigee lorsque cette règle déclenche une erreur. Ces informations sont importantes si vous développez des règles de défaillance afin de gérer les pannes. Pour en savoir plus, consultez les pages Ce que vous devez savoir à propos des erreurs liées aux règles et Gérer les pannes.
Erreurs d'exécution
Ces erreurs peuvent se produire lors de l'exécution de la règle.
Code d'erreur | État HTTP | Cause | Corriger |
---|---|---|---|
steps.xmltojson.ExecutionFailed |
ExecutionFailed |
Cette erreur se produit lorsque la charge utile d'entrée (XML) est vide ou que le code XML d'entrée est mal configuré ou non valide. | build |
steps.xmltojson.InCompatibleTypes |
ExecutionFailed |
Cette erreur se produit si le type de la variable définie dans l'élément <Source> et l'élément <OutputVariable> ne sont pas identiques. La correspondance du type des variables contenues dans l'élément <Source> et l'élément <OutputVariable> est obligatoire.
|
build |
steps.xmltojson.InvalidSourceType |
ExecutionFailed |
Cette erreur se produit si le type de la variable utilisée pour définir l'élément <Source> n'est pas valide. Les types de variable valides sont message et chaîne. |
build |
steps.xmltojson.OutputVariableIsNotAvailable |
ExecutionFailed |
Cette erreur se produit si la variable spécifiée dans l'élément <Source> de la règle XML vers JSON est de type chaîne et que l'élément <OutputVariable> n'est pas défini.
L'élément <OutputVariable> est obligatoire lorsque la variable définie dans l'élément <Source> est de type chaîne. |
build |
steps.xmltojson.SourceUnavailable |
ExecutionFailed |
Cette erreur se produit si la variable message spécifiée dans l'élément <Source> de la règle XML vers JSON est l'une des suivantes :
|
build |
Erreurs de déploiement
Ces erreurs peuvent se produire lorsque vous déployez un proxy contenant cette règle.
Nom de l'erreur | Cause | Corriger |
---|---|---|
EitherOptionOrFormat |
Si l'un des éléments <Options> ou <Format> n'est pas déclaré dans la règle XML vers JSON, le déploiement du proxy d'API échoue. |
build |
UnknownFormat |
Si un format inconnu est défini sur l'élément <Format> de la règle XML vers JSON, le déploiement du proxy d'API échoue. Les formats prédéfinis sont les suivants : xml.com , yahoo , google et badgerFish .
|
build |
Variables de panne
Ces variables sont définies lorsqu'une erreur d'exécution se produit. Pour en savoir plus, consultez la section Ce que vous devez savoir sur les erreurs liées aux règles.
Variables | Lieu | Exemple |
---|---|---|
fault.name="fault_name" |
fault_name est le nom de l'erreur, tel qu'indiqué dans le tableau Erreurs d'exécution ci-dessus. Le nom d'erreur est la dernière partie du code d'erreur. | fault.name = "SourceUnavailable" |
xmltojson.policy_name.failed |
policy_name est le nom spécifié par l'utilisateur de la règle qui a provoqué l'erreur. | xmltojson.XMLtoJSON-1.failed = true |
Exemple de réponse d'erreur
{ "fault": { "faultstring": "XMLToJSON[XMLtoJSON-1]: Source xyz is not available", "detail": { "errorcode": "steps.xml2json.SourceUnavailable" } } }
Exemple de règle de défaillance
<faultrule name="VariableOfNonMsgType"></faultrule><FaultRule name="XML to JSON Faults"> <Step> <Name>AM-SourceUnavailableMessage</Name> <Condition>(fault.name Matches "SourceUnavailable") </Condition> </Step> <Step> <Name>AM-BadXML</Name> <Condition>(fault.name = "ExecutionFailed")</Condition> </Step> <Condition>(xmltojson.XMLtoJSON-1.failed = true) </Condition> </FaultRule>
Articles associés
Conversion JSON en XML : Règle JSONtoXML