Vous consultez la documentation d'Apigee et d'Apigee hybrid.
Consultez la documentation d'Apigee Edge.
SourceUnavailable
Code d'erreur
steps.json2xml.SourceUnavailable
Corps de la réponse d'erreur
{ "fault": { "faultstring": "JSONToXML[policy_name]: Source [source_variable] is not available", "detail": { "errorcode": "steps.json2xml.SourceUnavailable" } } }
Exemple d'erreur
{
"fault": {
"faultstring": "JSONToXML[Convert-JSONToXML]: Source response is not available",
"detail": {
"errorcode": "steps.json2xml.SourceUnavailable"
}
}
}
Cause
Cette erreur se produit si la variable message spécifiée dans l'élément <Source>
de la règle JSON est XML :
- hors du champ d'application (non disponible dans le flux spécifique où la règle est exécutée) ou
- impossible à résoudre (non définie).
Par exemple, cette erreur se produit si la règle JSON vers XML est censée être exécutée dans le flux de requête, mais que l'élément <Source>
est défini sur la variable response
, qui n'existe pas dans le flux de requête.
Diagnostic
Identifiez la règle JSON vers XML où l'erreur s'est produite et le nom de la variable indisponible. Vous pouvez trouver ces deux éléments dans l'élément
faultstring
de la réponse d'erreur. Par exemple, dans le fichierfaultstring
suivant, le nom de la règle estConvert-JSONToXML
et celui de la variable estresponse
:"faultstring": "JSONToXML[Convert-JSONToXML]: Source response is not available"
Dans le fichier XML de la règle JSON vers XML défaillante, vérifiez que le nom de la variable définie dans l'élément
<Source>
correspond au nom de la variable identifiée dans la chaîne d'erreur (étape 1 ci-dessus). Par exemple, la règle JSON vers XML suivante spécifie une variable nomméeresponse
dans l'élément<Source>
, ce qui correspond au contenu defaultstring
:<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <JSONToXML async="false" continueOnError="false" enabled="true" name="Convert-JSONToXML"> <DisplayName>Convert-JSONToXML</DisplayName> <Properties/> <Options> <NullValue>NULL</NullValue> <NamespaceBlockName>#namespaces</NamespaceBlockName> <DefaultNamespaceNodeName>$default</DefaultNamespaceNodeName> <NamespaceSeparator>:</NamespaceSeparator> <TextNodeName>#text</TextNodeName> <AttributeBlockName>#attrs</AttributeBlockName> <AttributePrefix>@</AttributePrefix> <InvalidCharsReplacement>_</InvalidCharsReplacement> <ObjectRootElementName>Root</ObjectRootElementName> <ArrayRootElementName>Array</ArrayRootElementName> <ArrayItemElementName>Item</ArrayItemElementName> </Options> <OutputVariable>request</OutputVariable> <Source>response</Source> </JSONToXML>
Déterminez si la variable utilisée dans l'élément
<Source>
est définie et disponible dans le flux dans lequel la règle JSON vers XML est exécutée.Si la variable est :
- hors du champ d'application (non disponible dans le flux spécifique où la règle est exécutée) ou
- impossible à résoudre (non définie).
alors il s'agit de la cause de l'erreur.
Par exemple, supposons que la règle XML vers JSON présentée ci-dessus soit censée être exécutée dans le flux de requête. Rappelez-vous que la variable
response
est utilisée dans l'élément<Source>
de la règle JSON vers XML. La variable de réponse n'est disponible que dans le flux de réponse.Comme la variable
response
n'existe pas dans le flux de requête, vous recevez le code d'erreur :steps.json2xml.SourceUnavailable
Solution
Assurez-vous que la variable définie dans l'élément <Source>
de la règle JSON vers XML défaillante est définie et qu'elle existe dans le flux où la règle est exécutée.
Pour corriger la règle JSON vers XML indiquée ci-dessus, vous pouvez modifier l'élément <Source>
afin d'utiliser la variable request
, car il existe dans le flux de requête :
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<JSONToXML async="false" continueOnError="false" enabled="true" name="Convert-JSONToXML">
<DisplayName>Convert-JSONToXML</DisplayName>
<Properties/>
<Options>
<NullValue>NULL</NullValue>
<NamespaceBlockName>#namespaces</NamespaceBlockName>
<DefaultNamespaceNodeName>$default</DefaultNamespaceNodeName>
<NamespaceSeparator>:</NamespaceSeparator>
<TextNodeName>#text</TextNodeName>
<AttributeBlockName>#attrs</AttributeBlockName>
<AttributePrefix>@</AttributePrefix>
<InvalidCharsReplacement>_</InvalidCharsReplacement>
<ObjectRootElementName>Root</ObjectRootElementName>
<ArrayRootElementName>Array</ArrayRootElementName>
<ArrayItemElementName>Item</ArrayItemElementName>
</Options>
<OutputVariable>request</OutputVariable>
<Source>request</Source>
</JSONToXML>
ExecutionFailed
Code d'erreur
steps.json2xml.ExecutionFailed
Corps de la réponse d'erreur
{ "fault": { "faultstring": "JSONToXML[policy_name]: Execution failed due to reason: Expecting { or [ at line 1", "detail": { "errorcode": "steps.json2xml.ExecutionFailed" } } }
Causes possibles
Les causes possibles de cette erreur sont les suivantes :
Cause | Description |
Charge utile d'entrée manquante | La charge utile d'entrée (JSON) est vide. |
Entrée invalide ou incorrecte | L'entrée (JSON) transmise à la règle JSON vers la règle XML est non valide ou incorrecte. |
Cause : charge utile d'entrée manquante
Dans la règle JSON vers XML, si le contenu (charge utile) de la variable spécifiée dans l'élément <Source>
est vide, cette erreur se produit.
Par exemple, si l'élément <Source>
de la règle JSON vers XML est défini en tant que variable request
ou response
et qu'il est censé contenir une charge utile JSON, mais que la charge utile est vide, l'erreur se produit.
Diagnostic
Identifiez la règle JSON vers XML où l'erreur s'est produite. Vous trouverez ces informations dans l'élément
faultstring
de la réponse d'erreur. Par exemple, dans le fichierfaultstring
suivant, le nom de la règle estConvert-JSONToXML
:"faultstring": "JSONToXML[Convert-JSONToXML]: Execution failed due to reason: Expecting { or [ at line 1"
Examinez l'élément
<Source>
dans le fichier XML de la règle JSON vers XML défaillante, puis déterminez la variable spécifiée. Par exemple, l'élément<Source>
est défini surrequest
pour la règle JSON vers XML suivante :<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <JSONToXML async="false" continueOnError="false" enabled="true" name="Convert-JSONToXML"> <DisplayName>Convert-JSONToXML</DisplayName> <Properties/> <Options> <NullValue>NULL</NullValue> <NamespaceBlockName>#namespaces</NamespaceBlockName> <DefaultNamespaceNodeName>$default</DefaultNamespaceNodeName> <NamespaceSeparator>:</NamespaceSeparator> <TextNodeName>#text</TextNodeName> <AttributeBlockName>#attrs</AttributeBlockName> <AttributePrefix>@</AttributePrefix> <InvalidCharsReplacement>_</InvalidCharsReplacement> <ObjectRootElementName>Root</ObjectRootElementName> <ArrayRootElementName>Array</ArrayRootElementName> <ArrayItemElementName>Item</ArrayItemElementName> </Options> <OutputVariable>request</OutputVariable> <Source>request</Source> </JSONToXML>
Vérifiez si la variable spécifiée pour l'élément
<Source>
de la règle est vide. Si c'est le cas, il s'agit de la cause de l'erreur.Dans l'exemple de règle JSON vers XML ci-dessus, la charge utile de la requête (c'est-à-dire le corps de la requête) envoyée par le client est vide.
Exemple :
curl -v "http://your_host_alias/v1/testjsontoxml" -H "Content-Type: application/json"
Où your_host_alias est un domaine public utilisé pour accéder à vos API, tel que configuré dans la propriété
virtualhosts.hostAliases
de votre fichier de remplacement. Consultez la section Spécifier des remplacements de configuration.Comme la charge utile de la réponse JSON est vide, vous recevez le code d'erreur :
steps.json2xml.ExecutionFailed
Cette erreur peut également se produire si l'élément
<Source>
est défini sur "réponse", alors que le serveur backend transmet une charge utile vide.
Solution
Assurez-vous que l'entrée transmise à la règle JSON vers XML dans l'élément <Source>
est une charge utile JSON valide et non vide.
Pour résoudre le problème dans l'exemple de règle JSON vers XML, transmettez une charge JSON valide. Exemple :
Créez un fichier nommé
city.json
avec le contenu suivant :{ "Name":"Apigee", "City":"Bengaluru", "Pincode":"560016" }
Effectuez l'appel d'API à l'aide d'une commande curl comme suit :
curl -v "http://your_host_alias/v1/testxmltojson" -H "Content-Type: application/json" -X POST -d @company.json
Où your_host_alias est un domaine public utilisé pour accéder à vos API, tel que configuré dans la propriété
virtualhosts.hostAliases
de votre fichier de remplacement. Consultez la section Spécifier des remplacements de configuration.
Cause : entrée invalide ou incorrecte
Si la règle JSON vers XML analyse une entrée non valide ou incorrecte, cette erreur s'affiche.
Par exemple, si l'entrée JSON non valide suivante est fournie en tant qu'entrée dans une règle JSON vers XML,
[
"args": ["name" : "Google" ]
]
vous obtenez l'erreur suivante :
"faultstring": "JSONToXML[Convert-JSONToXML]: Execution failed due to reason: Expecting { or [ at line 1"
Diagnostic
Identifiez la règle JSON vers XML où l'erreur s'est produite. Vous trouverez ces informations dans l'élément
faultstring
de la réponse d'erreur. Par exemple, dans le fichierfaultstring
suivant, le nom de la règle estConvert-JSONToXML
:"faultstring": "JSONToXML[Convert-JSONToXML]: Execution failed due to reason: Expecting { or [ at line 1"
Examinez l'élément
<Source>
spécifié dans le fichier XML de la règle JSON vers XML défaillante. Par exemple, l'élément<Source>
est défini sur la variablerequest
pour la règle JSON vers XML suivante :<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <JSONToXML async="false" continueOnError="false" enabled="true" name="Convert-JSONToXML"> <DisplayName>Convert-JSONToXML</DisplayName> <Properties/> <Options> <NullValue>NULL</NullValue> <NamespaceBlockName>#namespaces</NamespaceBlockName> <DefaultNamespaceNodeName>$default</DefaultNamespaceNodeName> <NamespaceSeparator>:</NamespaceSeparator> <TextNodeName>#text</TextNodeName> <AttributeBlockName>#attrs</AttributeBlockName> <AttributePrefix>@</AttributePrefix> <InvalidCharsReplacement>_</InvalidCharsReplacement> <ObjectRootElementName>Root</ObjectRootElementName> <ArrayRootElementName>Array</ArrayRootElementName> <ArrayItemElementName>Item</ArrayItemElementName> </Options> <OutputVariable>request</OutputVariable> <Source>request</Source> </JSONToXML>
Vérifiez que l'entrée spécifiée dans l'élément
<Source>
correspond à une charge utile JSON valide. Si l'entrée est invalide ou incorrecte, il s'agit de la cause de l'erreur.Supposons que la charge utile JSON non valide suivante a été transmis à la règle.
[ "args": ["name" : "Google" ] ]
Voici un exemple d'appel d'API qui illustre comment la requête a été transmise :
curl -v "http://your_host_alias/v1/testjsontoxml" -H "Content-Type: application/json" -X POST -d '[ "args" : ["name" : "Google" ]]'
Où your_host_alias est un domaine public utilisé pour accéder à vos API, tel que configuré dans la propriété
virtualhosts.hostAliases
de votre fichier de remplacement. Consultez la section Spécifier des remplacements de configuration.La charge utile JSON transmise dans la requête n'est pas valide, car l'objet JSON commence et se termine par des crochets ([ ]). Vous recevez donc le code d'erreur suivant :
steps.json2xml.ExecutionFailed
Cette erreur peut également se produire si l'élément
<Source>
a été défini sur la réponse, mais que la charge utile de la réponse JSON est incorrecte ou non valide.
Solution
Assurez-vous que l'entrée transmise à la règle JSON vers XML de l'élément <Source>
est valide et n'est pas incorrecte.
Pour résoudre le problème dans l'exemple de règle JSON vers XML décrit ci-dessus, transmettez une requête de charge utile JSON valide comme suit :
{
"args" : {
"name" : "Google"
}
}
OutputVariableIsNotAvailable
Code d'erreur
steps.json2xml.OutputVariableIsNotAvailable
Corps de la réponse d'erreur
{ "fault": { "faultstring": "JSONToXML[policy_name]: Output variable is not available.", "detail": { "errorcode": "steps.json2xml.OutputVariableIsNotAvailable" } } }
Exemple d'erreur
{
"fault": {
"faultstring": "JSONToXML[Check-JSONToXML]: Output variable is not available.",
"detail": {
"errorcode": "steps.json2xml.OutputVariableIsNotAvailable"
}
}
}
Cause
Cette erreur se produit si la variable spécifiée dans l'élément <Source>
de la règle JSON vers XML 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.
Diagnostic
Identifiez la règle JSON vers XML où l'erreur s'est produite. Vous trouverez ces informations dans l'élément
faultstring
de la réponse d'erreur. Par exemple, dans le fichierfaultstring
suivant, le nom de la règle estCheck-JSONToXML
:"faultstring": "JSONToXML[Check-JSONToXML]: Output variable is not available."
Dans la règle JSON vers XML défaillante, vérifiez si le champ
<OutputVariable>
est manquant.L'exemple de règle JSON vers XML suivant contient un élément
<OutputVariable>
manquant :<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <JSONToXML async="false" continueOnError="false" enabled="true" name="JSONToXML"> <DisplayName>Check-JSONToXML</DisplayName> <Properties/> <Options> <NullValue>NULL</NullValue> <NamespaceBlockName>#namespaces</NamespaceBlockName> <DefaultNamespaceNodeName>$default</DefaultNamespaceNodeName> <NamespaceSeparator>:</NamespaceSeparator> <TextNodeName>#text</TextNodeName> <AttributeBlockName>#attrs</AttributeBlockName> <AttributePrefix>@</AttributePrefix> <InvalidCharsReplacement>_</InvalidCharsReplacement> <ObjectRootElementName>Root</ObjectRootElementName> <ArrayRootElementName>Array</ArrayRootElementName> <ArrayItemElementName>Item</ArrayItemElementName> </Options> <Source>PostalCode</Source> </JSONToXML>
Déterminez le type de variable spécifié dans l'élément
<Source>
:- Recherchez le code dans le proxy d'API où la variable a été définie en premier.
- Une fois que vous avez identifié la règle où la variable est définie et renseignée en premier, vous devez déterminer le type de cette variable comme suit :
- Vérifiez la valeur de l'attribut "type" (le cas échéant).
- En l'absence d'attribut "type", la variable est considérée comme une chaîne.
- Si la variable est de type chaîne, il s'agit de la cause de l'erreur. Pour en savoir plus sur les variables courantes et leurs types, consultez la documentation de référence sur les variables.
Par exemple, examinez la variable
PostalCode
dans la règle JSON vers XML ci-dessus.Prenons l'exemple d'une règle d'attribution de message qui permet d'attribuer une valeur à une variable appelée
PostalCode
, comme illustré ci-dessous :<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <AssignMessage async="false" continueOnError="false" enabled="true" name="Assign_PostalCode"> <DisplayName>Assign_PostalCode</DisplayName> <Properties/> <AssignVariable> <Name>PostalCode</Name> <Value>{"value":"56008"}</Value> <Ref/> </AssignVariable> <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables> <AssignTo createNew="false" transport="http" type="request"/> </AssignMessage>
Notez que le type de variable défini dans
<AssignVariable>
est "chaîne". Ainsi, la variablePostalCode
est de type "chaîne".Rappelez-vous que la variable
PostalCode
est utilisée dans l'élément<Source>
de la règle JSON vers XML :<Source>PostalCode</Source>
Comme
PostalCode
est de type chaîne et que l'élément<OutputVariable>
est manquant, vous recevez le code d'erreur :steps.json2xml.OutputVariableIsNotAvailable
Solution
Assurez-vous que si la variable spécifiée dans l'élément <Source>
de la règle JSON vers XML est de type chaîne, l'élément <OutputVariable>
est défini dans la règle.
Pour corriger la règle JSON vers XML décrite ci-dessus, incluez un élément <OutputVariable>
comme indiqué ci-dessous.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<JSONToXML async="false" continueOnError="false" enabled="true" name="JSONToXML">
<DisplayName>Check-JSONToXML</DisplayName>
<Properties/>
<Options>
<NullValue>NULL</NullValue>
<NamespaceBlockName>#namespaces</NamespaceBlockName>
<DefaultNamespaceNodeName>$default</DefaultNamespaceNodeName>
<NamespaceSeparator>:</NamespaceSeparator>
<TextNodeName>#text</TextNodeName>
<AttributeBlockName>#attrs</AttributeBlockName>
<AttributePrefix>@</AttributePrefix>
<InvalidCharsReplacement>_</InvalidCharsReplacement>
<ObjectRootElementName>Root</ObjectRootElementName>
<ArrayRootElementName>Array</ArrayRootElementName>
<ArrayItemElementName>Item</ArrayItemElementName>
</Options>
<OutputVariable>response</OutputVariable>
<Source>PostalCode</Source>
</JSONToXML>
InCompatibleTypes
Code d'erreur
steps.json2xml.InCompatibleTypes
Corps de la réponse d'erreur
{ "fault": { "faultstring": "JSONToXML[policy_name]: String can not be assigned to message type.", "detail": { "errorcode": "steps.json2xml.InCompatibleTypes" } } }
Exemple d'erreur
{
"fault": {
"faultstring": "JSONToXML[JSONToXML_checktype]: String can not be assigned to message type.",
"detail": {
"errorcode": "steps.json2xml.InCompatibleTypes"
}
}
}
Cause
Cette erreur se produit si le type de la variable définie dans l'élément <Source>
et dans l'élément <OutputVariable>
n'est pas le même. Il est obligatoire que les types des variables contenues dans l'élément <Source>
et dans l'élément <OutputVariable>
correspondent.
Les types valides sont message
et string
.
Diagnostic
Identifiez la règle JSON vers XML où l'erreur s'est produite. Vous trouverez ces informations dans l'élément
faultstring
de la réponse d'erreur. Par exemple, dans le fichierfaultstring
suivant, le nom de la règle estJSONToXML_checktype
:"faultstring": "JSONToXML[JSONToXML_checktype]: String can not be assigned to message type."
Dans la règle d'échec JSON vers XML défaillante, notez les valeurs spécifiées dans
<OutputVariable>
et<Source>
.Prenons l'exemple de règle suivant :
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <JSONToXML async="false" continueOnError="false" enabled="true" name="JSONToXML_checktype"> <DisplayName>JSONToXML_checktype</DisplayName> <Properties/> <Options> <NullValue>NULL</NullValue> <NamespaceBlockName>#namespaces</NamespaceBlockName> <DefaultNamespaceNodeName>$default</DefaultNamespaceNodeName> <NamespaceSeparator>:</NamespaceSeparator> <TextNodeName>#text</TextNodeName> <AttributeBlockName>#attrs</AttributeBlockName> <AttributePrefix>@</AttributePrefix> <InvalidCharsReplacement>_</InvalidCharsReplacement> <ObjectRootElementName>Root</ObjectRootElementName> <ArrayRootElementName>Array</ArrayRootElementName> <ArrayItemElementName>Item</ArrayItemElementName> </Options> <OutputVariable>response</OutputVariable> <Source>PostalCode</Source> </JSONToXML>
Déterminez le type de variable spécifié dans les éléments
<Source>
et<OutputVariable>
:- Recherchez le code dans le proxy d'API où chacune de ces variables a été définie en premier.
- Une fois que vous avez identifié la règle où la variable est définie et renseignée en premier, vous devez déterminer le type de cette variable comme suit :
- Vérifiez la valeur de l'attribut "type" (le cas échéant).
- En l'absence d'attribut "type", la variable est considérée comme une chaîne.
- Si le type de la variable spécifiée dans
<Source>
est "chaîne" alors que le type de<OutputVariable>
est "message", ou inversement, il s'agit de la cause de l'erreur. Pour en savoir plus sur les variables courantes et leurs types, consultez la documentation de référence sur les variables.
Prenons l'exemple d'une règle d'attribution de message qui permet d'attribuer une valeur à une variable appelée
PostalCode
, comme illustré ci-dessous :<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <AssignMessage async="false" continueOnError="false" enabled="true" name="Assign_PostalCode"> <DisplayName>Assign_PostalCode</DisplayName> <Properties/> <AssignVariable> <Name>PostalCode</Name> <Value>{"value":"56008"}</Value> <Ref/> </AssignVariable> <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables> <AssignTo createNew="false" transport="http" type="request"/> </AssignMessage>
Notez que le type de variable défini dans
<AssignVariable>
est chaîne ; la variablePostalCode
est donc de type chaîne.Rappelez-vous que la variable
PostalCode
est utilisée dans l'élément<Source>
de la règle JSON vers XML :<Source>PostalCode</Source>
De même, n'oubliez pas que la variable
response
est utilisée dans l'élément<OutputVariable>
de la règle JSON vers XML :<OutputVariable>response</OutputVariable>
Étant donné que
PostalCode
est de type chaîne et que la variableresponse
est de type message, il s'agit de types incompatibles. Vous recevez donc le code d'erreur :steps.json2xml.InCompatibleTypes
L'erreur ci-dessus peut également se produire si la variable de l'élément
<Source>
est de typemessage
, alors que la variable de l'élément<OutputVariable>
est de type chaîne.
Solution
Assurez-vous que le type de la variable définie dans l'élément <Source>
et dans l'élément <OutputVariable>
est le même. Il est obligatoire que les types des variables contenues dans l'élément <Source>
et dans l'élément <OutputVariable>
correspondent. Autrement dit, assurez-vous que les éléments <Source>
et <OutputVariable>
sont à la fois de type de chaîne ou de message.
Pour corriger la règle JSON vers XML mentionnée ci-dessus, vous pouvez déclarer une autre variable PostalCode_output
de type chaîne à l'aide de la règle d'attribution de message et utiliser cette variable dans l'élément <OutputVariable>
de la règle JSON vers XML.
Modification de la règle Assign Message :
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<AssignMessage async="false" continueOnError="false" enabled="true" name="Assign_PostalCode">
<DisplayName>Assign_PostalCode</DisplayName>
<Properties/>
<AssignVariable>
<Name>PostalCode</Name>
<Value>{"value":"56008"}</Value>
<Ref/>
</AssignVariable>
<AssignVariable>
<Name>PostalCode_output</Name>
<Ref/>
</AssignVariable>
<IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
<AssignTo createNew="false" transport="http" type="request"/>
</AssignMessage>
Règle JSON vers XML modifiée :
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<JSONToXML async="false" continueOnError="false" enabled="true" name="JSONToXML">
<DisplayName>JSONToXML_checktype</DisplayName>
<Properties/>
<Options>
<NullValue>NULL</NullValue>
<NamespaceBlockName>#namespaces</NamespaceBlockName>
<DefaultNamespaceNodeName>$default</DefaultNamespaceNodeName>
<NamespaceSeparator>:</NamespaceSeparator>
<TextNodeName>#text</TextNodeName>
<AttributeBlockName>#attrs</AttributeBlockName>
<AttributePrefix>@</AttributePrefix>
<InvalidCharsReplacement>_</InvalidCharsReplacement>
<ObjectRootElementName>Root</ObjectRootElementName>
<ArrayRootElementName>Array</ArrayRootElementName>
<ArrayItemElementName>Item</ArrayItemElementName>
</Options>
<OutputVariable>PostalCode_output</OutputVariable>
<Source>PostalCode</Source>
</JSONToXML>
InvalidSourceType
Code d'erreur
steps.json2xml.InvalidSourceType
Corps de la réponse d'erreur
{ "fault": { "faultstring": "JSONToXML[class invalid_class]: Invalid source type class invalid_class. Valid source types are [message, string].", "detail": { "errorcode": "steps.json2xml.InvalidSourceType" } } }
Exemple d'erreur
{
"fault": {
"faultstring": "JSONToXML[class java.lang.Integer]: Invalid source type class java.lang.Integer. Valid source types are [message, string].",
"detail": {
"errorcode": "steps.json2xml.InvalidSourceType"
}
}
}
Cause
Cette erreur se produit si le type de la variable utilisé pour définir l'élément <Source>
est invalide. Les types de variables valides sont message
et string
.
Diagnostic
Identifiez le type de source non valide utilisé dans la règle JSON vers XML. Vous trouverez cette information dans le message d'erreur. Par exemple, dans l'erreur suivante, le type invalide est "entier".
"faultstring": "JSONToXML[class java.lang.Integer]: Invalid source type class java.lang.Integer. Valid source types are [message, string]."
Examinez toutes les règles JSON vers XML dans le proxy d'API spécifique où l'échec a eu lieu. Dans la règle JSON vers XML défaillante, notez le nom de la variable spécifiée dans
<Source>
.Voici un exemple de règle dont la variable nommée EmployeeID est spécifiée dans l'élément
<Source>
:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<JSONToXML async="false" continueOnError="false" enabled="true" name="JSONToXML">
<DisplayName>Check_SourceType</DisplayName>
<Properties/>
<Options>
<NullValue>NULL</NullValue>
<NamespaceBlockName>#namespaces</NamespaceBlockName>
<DefaultNamespaceNodeName>$default</DefaultNamespaceNodeName>
<NamespaceSeparator>:</NamespaceSeparator>
<TextNodeName>#text</TextNodeName>
<AttributeBlockName>#attrs</AttributeBlockName>
<AttributePrefix>@</AttributePrefix>
<InvalidCharsReplacement>_</InvalidCharsReplacement>
<ObjectRootElementName>Root</ObjectRootElementName>
<ArrayRootElementName>Array</ArrayRootElementName>
<ArrayItemElementName>Item</ArrayItemElementName>
</Options>
<OutputVariable>request</OutputVariable>
<Source>EmployeeID</Source>
</JSONToXML>
Déterminez le type de variable spécifié dans l'élément
<Source>
:- Recherchez le code dans le proxy d'API où la variable a été définie en premier.
- Une fois que vous avez identifié la règle où la variable est définie et renseignée en premier, vous devez déterminer le type de cette variable comme suit :
- Vérifiez la valeur de l'attribut "type" (le cas échéant).
- En l'absence d'attribut "type", la variable est considérée comme une chaîne.
- Si le type de la variable spécifiée dans
<Source>
n'est ni message ni chaîne, il s'agit de la cause de l'erreur. Pour en savoir plus sur les variables courantes et leurs types, consultez la documentation de référence sur les variables.
À titre d'exemple, considérons une règle ExtractVariables utilisée pour extraire la valeur d'une charge utile JSON et qui définit la valeur sur la variable
EmployeeID
du type entier, comme indiqué ci-dessous :<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <ExtractVariables name="ExtractJSONVariables"> <Source>request</Source> <JSONPayload> <Variable name="EmployeeID" type="integer"> <JSONPath>$.ID</JSONPath> </Variable> </JSONPayload> </ExtractVariables>
Rappelez-vous que la variable
EmployeeID
est utilisée dans l'élément<Source>
de la règle JSON vers XML :<Source>EmployeeID</Source>
Comme le type de cette variable est
Integer
, qui n'est pas un type<Source>
valide, le proxy d'API échoue et renvoie l'erreur :steps.json2xml.InvalidSourceType
Solution
Assurez-vous que le type de la variable utilisée pour spécifier l'élément <Source>
est valide. Les types valides <Source>
sont message
et string
.
Afin d'éviter l'erreur ci-dessus dans une règle JSON vers XML, vous pouvez utiliser la variable de requête de type message ou toute autre chaîne correspondant à une charge utile JSON valide.