Estás viendo la documentación de Apigee Edge.
Ve a la
documentación de Apigee X. info
SourceUnavailable
Código de error
steps.json2xml.SourceUnavailable
Cuerpo de la respuesta de error
{ "fault": { "faultstring": "JSONToXML[policy_name]: Source [source_variable] is not available", "detail": { "errorcode": "steps.json2xml.SourceUnavailable" } } }
Ejemplo de error
{
"fault": {
"faultstring": "JSONToXML[Convert-JSONToXML]: Source response is not available",
"detail": {
"errorcode": "steps.json2xml.SourceUnavailable"
}
}
}
Causa
Este error ocurre si la variable message especificada en el elemento <Source>
de la política JSON to XML tiene una de las siguientes características:
- Fuera del alcance (no disponible en el flujo específico en el que se ejecuta la política)
- No se puede resolver (no está definida)
Por ejemplo, este error ocurre si se supone que la política JSON to XML se ejecutará en el flujo de solicitud, pero el elemento <Source>
se establece en la variable response
, que no existe en el flujo de solicitud.
Diagnóstico
Identifica la política JSON to XML en la que se produjo el error y el nombre de la variable que no está disponible. Puedes encontrar ambos elementos en el elemento
faultstring
de la respuesta de error. Por ejemplo, en el siguiente valorfaultstring
, el nombre de la política esConvert-JSONToXML
y la variable esresponse
:"faultstring": "JSONToXML[Convert-JSONToXML]: Source response is not available"
En el archivo XML de la política JSON to XML, verifica que el nombre de la variable establecida en el elemento
<Source>
coincida con el nombre de la variable identificado en la string de error (paso n.° 1 anterior). Por ejemplo, la siguiente política JSON to XML especifica una variable llamadaresponse
en el elemento<Source>
, que coincide con lo que hay en lafaultstring
:<?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>
Determina si la variable utilizada en el elemento
<Source>
está definida y disponible en el flujo en el que se ejecuta la política JSON to XML.Verifica si la variable tiene una de las siguientes características:
- Fuera del alcance (no disponible en el flujo específico en el que se ejecuta la política)
- No se puede resolver (no está definida)
entonces esa es la causa del error.
A modo de ejemplo, supongamos que la política JSON to XML que se muestra arriba se debe ejecutar en el flujo de la solicitud. Recuerda que la variable
response
se usa en el elemento<Source>
de la política JSON to XML. La variable de respuesta solo está disponible en el flujo de respuesta.Debido a que la variable de
response
no existe en el flujo de solicitud, recibes el siguiente código de error:steps.json2xml.SourceUnavailable
Solución
Asegúrate de que la variable establecida en el elemento <Source>
de la política JSON to XML con error se haya definido y exista en el flujo en el que se ejecuta la política.
Para corregir la política JSON to XML de ejemplo que se muestra arriba, puedes modificar el elemento <Source>
para usar la variable request
, porque existe en el flujo de la solicitud:
<?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
Código de error
steps.json2xml.ExecutionFailed
Cuerpo de la respuesta del error
{ "fault": { "faultstring": "JSONToXML[policy_name]: Execution failed due to reason: Expecting { or [ at line 1", "detail": { "errorcode": "steps.json2xml.ExecutionFailed" } } }
Causas posibles
Las siguientes son las posibles causas de este error:
Causa | Descripción |
Carga útil de entrada faltante | La carga útil de entrada (JSON) está vacía. |
Entrada no válida o con formato incorrecto | La entrada (JSON) que se pasó a la política JSON to XML no es válida o presenta errores de formato. |
Causa: Falta la carga útil de entrada
En la política de JSON a XML, si el contenido (carga útil) de la variable especificada en el elemento <Source>
está vacío, se produce este error.
Por ejemplo, si el elemento <Source>
de la política JSON to XML se establece como una variable request
o response
y se supone que contendrá una carga útil JSON, pero la carga útil está vacía, ocurre el error.
Diagnóstico
Identifica la política JSON to XML en la que se produjo el error. Puedes encontrar esta información en el elemento
faultstring
de la respuesta de error. Por ejemplo, en el siguientefaultstring
, el nombre de la política esConvert-JSONToXML
:"faultstring": "JSONToXML[Convert-JSONToXML]: Execution failed due to reason: Expecting { or [ at line 1"
Examina el elemento
<Source>
en el archivo XML de política JSON to XML y determina la variable especificada. Por ejemplo, la siguiente política de JSON to XML tiene el elemento<Source>
establecido enrequest
:<?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>
Comprueba si la variable especificada para el elemento
<Source>
en la política está vacía. Si está vacía, esa es la causa del error.En el ejemplo de política JSON to XML que se muestra arriba, la carga útil de la solicitud (es decir, el cuerpo de la solicitud) que envió el cliente está vacía.
Por ejemplo:
curl -v "http://<org>-<env>.apigee.net/v1/testjsontoxml" -H "Content-Type: application/json"
Debido a que la carga útil de respuesta JSON está vacía, recibirás el siguiente código de error:
steps.json2xml.ExecutionFailed
Este error también puede ocurrir si el elemento
<Source>
está configurado como respuesta, pero el servidor de backend pasa una carga útil vacía.
Solución
Asegúrate de que la entrada que se pase a la política JSON to XML en el elemento <Source>
sea una carga útil de JSON válida y no esté vacía.
Para solucionar el problema con la política JSON to XML de muestra, pasa una carga útil de JSON válida. Por ejemplo:
Crea un archivo llamado
city.json
con el siguiente contenido:{ "Name":"Apigee", "City":"Bengaluru", "Pincode":"560016" }
Realiza la llamada a la API con un comando cURL de la siguiente manera:
curl -v "http://<org>-<env>.apigee.net/v1/testxmltojson" -H "Content-Type: application/json" -X POST -d @company.json
Causa: Entrada no válida o con formato incorrecto
Si la política JSON to XML analiza entradas que no son válidas o tienen errores de formato, verás este error.
Por ejemplo, si el siguiente JSON no válido se proporciona como entrada a la política JSON to XML,
[
"args": ["name" : "Google" ]
]
aparecerá el siguiente error:
"faultstring": "JSONToXML[Convert-JSONToXML]: Execution failed due to reason: Expecting { or [ at line 1"
Diagnóstico
Identifica la política JSON to XML en la que se produjo el error. Puedes encontrar esta información en el elemento
faultstring
de la respuesta de error. Por ejemplo, en el siguientefaultstring
, el nombre de la política esConvert-JSONToXML
:"faultstring": "JSONToXML[Convert-JSONToXML]: Execution failed due to reason: Expecting { or [ at line 1"
Examina el elemento
<Source>
especificado en el archivo XML de política JSON to XML con errores. Por ejemplo, la siguiente política JSON to XML tiene el elemento<Source>
establecido en la variablerequest
:<?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>
Valida si la entrada especificada en el elemento
<Source>
es una carga útil de JSON válida. Si la entrada no es válida o incorrecto, esa es la causa del error.Supón que se pasó el siguiente JSON no válido a la política.
[ "args": ["name" : "Google" ] ]
A continuación, la llamada a la API de muestra que muestra cómo se pasó la solicitud:
curl -v "http://<org>-<env>.apigee.net/v1/testjsontoxml" -H "Content-Type: application/json" -X POST -d '[ "args" : ["name" : "Google" ]]'
La carga útil JSON que se pasa en la solicitud no es válida porque el objeto JSON inicia y termina con corchetes ([ ]). Por este motivo, recibirás el código de error:
steps.json2xml.ExecutionFailed
Este error también puede ocurrir si el elemento
<Source>
se configuró como respuesta, pero la carga útil de la respuesta JSON no es válida o presenta errores de formato.
Solución
Asegúrate de que la entrada que se pasa a la política JSON to XML en el elemento <Source>
sea válida y no tenga un formato incorrecto.
Para solucionar el problema con la política JSON to XML de ejemplo analizada anteriormente, pasa una solicitud de carga útil de JSON válida de la siguiente manera:
{
"args" : {
"name" : "Google"
}
}
OutputVariableIsNotAvailable
Código de error
steps.json2xml.OutputVariableIsNotAvailable
Cuerpo de la respuesta de error
{ "fault": { "faultstring": "JSONToXML[policy_name]: Output variable is not available.", "detail": { "errorcode": "steps.json2xml.OutputVariableIsNotAvailable" } } }
Ejemplo de error
{
"fault": {
"faultstring": "JSONToXML[Check-JSONToXML]: Output variable is not available.",
"detail": {
"errorcode": "steps.json2xml.OutputVariableIsNotAvailable"
}
}
}
Causa
Este error se produce si la variable especificada en el elemento <Source>
de la política JSON to XML es de string de tipo y el elemento <OutputVariable>
no está definido. Este elemento <OutputVariable>
es obligatorio cuando la variable definida en el elemento <Source>
es de tipo de string.
Diagnóstico
Identifica la política JSON to XML en la que se produjo el error. Puedes encontrarla en el elemento
faultstring
de la respuesta de error. Por ejemplo, en el siguientefaultstring
, el nombre de la política esCheck-JSONToXML
:"faultstring": "JSONToXML[Check-JSONToXML]: Output variable is not available."
En la política de JSON to XML con errores, valide si falta el
<OutputVariable>
.A la siguiente política de JSONToXML de ejemplo le falta el elemento
<OutputVariable>
:<?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>
Determina el tipo de variable especificado en el elemento
<Source>
:- Ubica el código en el proxy de API, donde la variable se definió primero.
- Una vez que determines la política en la que se define y propaga la variable primero, debes determinar el tipo de esa variable de la siguiente manera:
- Comprueba el valor del atributo del tipo (si está presente).
- Si el atributo de tipo no está presente, la variable se considera una string.
- Si el tipo de variable es una string, esa es la causa del error. Puedes obtener información sobre las variables comunes y sus tipos en la referencia de variables.
Por ejemplo, observa la variable
PostalCode
en la política JSON to XML anterior.A modo de ejemplo, considera que se usa una Política de Asignar mensaje para asignar un valor a una variable llamada
PostalCode
, como se muestra a continuación:<?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>
Ten en cuenta que el tipo de variable establecido mediante
<AssignVariable>
es una string. Entonces, la variablePostalCode
es de tipo string.Ahora, recuerda que la variable
PostalCode
se usa en el elemento<Source>
de la política de XML a JSON:<Source>PostalCode</Source>
Debido a que
PostalCode
es del tipo string y no se encuentra el elemento<OutputVariable>
, recibirás el código de error:steps.json2xml.OutputVariableIsNotAvailable
Solución
Asegúrate de que, si la variable especificada en el elemento <Source>
de la política JSONToXML es de tipo string, el elemento <OutputVariable>
se defina dentro de la política.
Para corregir la política JSONToXML antes mencionada, incluye un elemento <OutputVariable>
, como se muestra a continuación.
<?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
Código de error
steps.json2xml.InCompatibleTypes
Cuerpo de la respuesta de error
{ "fault": { "faultstring": "JSONToXML[policy_name]: String can not be assigned to message type.", "detail": { "errorcode": "steps.json2xml.InCompatibleTypes" } } }
Ejemplo de error
{
"fault": {
"faultstring": "JSONToXML[JSONToXML_checktype]: String can not be assigned to message type.",
"detail": {
"errorcode": "steps.json2xml.InCompatibleTypes"
}
}
}
Causa
Este error se genera si el tipo de variable definida en el elemento <Source>
y el elemento <OutputVariable>
no son iguales. Es obligatorio que el tipo de variables incluidas dentro del elemento <Source>
y el elemento <OutputVariable>
coincidan.
Los tipos válidos son message
y string
.
Diagnóstico
Identifica la política JSON to XML en la que se produjo el error. Puedes encontrarla en el elemento
faultstring
de la respuesta de error. Por ejemplo, en el siguientefaultstring
, el nombre de la política esJSONToXML_checktype
:"faultstring": "JSONToXML[JSONToXML_checktype]: String can not be assigned to message type."
En la política JSON to XML con error, ten en cuenta los valores especificados en
<OutputVariable>
y<Source>
.Considera la siguiente política de ejemplo:
<?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>
Determina el tipo de variable especificada en los elementos
<Source>
y<OutputVariable>
:- Ubica el código en el proxy de API donde primero se definió cada una de estas variables.
- Una vez que determines la política en la que se define y propaga la variable primero, debes determinar el tipo de esa variable de la siguiente manera:
- Comprueba el valor del atributo del tipo (si está presente).
- Si el atributo de tipo no está presente, la variable se considera una string.
- Si el tipo de variable especificada en
<Source>
es una string, mientras el tipo de<OutputVariable>
es un mensaje, o viceversa, esa es la causa del error. Puedes obtener información sobre las variables comunes y sus tipos en la referencia de variables.
A modo de ejemplo, política de mensaje asignado que se usa para asignar un valor en una variable llamada
PostalCode
como se muestra a continuación:<?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>
Ten en cuenta que el tipo de variable establecido en
<AssignVariable>
es una string. Por lo tanto, la variablePostalCode
es de tipo string.Ahora, recuerda que la variable
PostalCode
se usa en el elemento<Source>
de la política de XML a JSON:<Source>PostalCode</Source>
De manera similar, recuerda que la variable
response
se usa en el elemento<OutputVariable>
de la política de XMLToJSON:<OutputVariable>response</OutputVariable>
Debido a que
PostalCode
es de tipo string, mientras que la variableresponse
es de tipo mensaje, son tipos incompatibles, por lo que recibes el código de error:steps.json2xml.InCompatibleTypes
El error anterior también se puede generar si la variable en el elemento
<Source>
es de tipomessage
, pero la variable en el elemento<OutputVariable>
es de tipo string.
Solución
Asegúrate de que el tipo de variable que se define en el elemento <Source>
y el elemento <OutputVariable>
siempre sea el mismo. Es obligatorio que el tipo de variables incluidas dentro del elemento <Source>
y el elemento <OutputVariable>
coincidan. Es decir, asegúrate de que el tipo de los elementos <Source>
y <OutputVariable>
sean de tipo string o mensaje.
Para corregir la política JSON to XML analizada anteriormente, puedes declarar otra variable PostalCode_output
de tipo string con la política Asignar mensaje y usar esta variable en el elemento <OutputVariable>
de la política JSON to XML.
Se modificó la política de mensaje asignado:
<?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>
Se modificó la política JSONToXML:
<?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
Código de error
steps.json2xml.InvalidSourceType
Cuerpo de la respuesta de error
{ "fault": { "faultstring": "JSONToXML[class invalid_class]: Invalid source type class invalid_class. Valid source types are [message, string].", "detail": { "errorcode": "steps.json2xml.InvalidSourceType" } } }
Ejemplo de error
{
"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"
}
}
}
Causa
Este error se genera si el tipo de variable que se usa para definir el elemento <Source>
no es válido. Los tipos de variable válidos son message
y string
.
Diagnóstico
Identifica el tipo de fuente no válido que se usa en la política JSON to XML. Puedes encontrar esta información en el mensaje de error. Por ejemplo, en el siguiente error, el tipo no válido es un número entero.
"faultstring": "JSONToXML[class java.lang.Integer]: Invalid source type class java.lang.Integer. Valid source types are [message, string]."
Examina todas las políticas JSON to XML en el proxy de API específico en el que se produjo la falla. En la política JSON to XML con errores, toma nota del nombre de la variable especificada en
<Source>
.A continuación, se muestra una política de ejemplo que tiene la variable llamada EmployeeID especificada en el elemento
<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>
Determina el tipo de variable especificado en el elemento
<Source>
:- Ubica el código en el proxy de API, donde la variable se definió primero.
- Una vez que determines la política en la que se define y propaga la variable primero, debes determinar el tipo de esa variable de la siguiente manera:
- Comprueba el valor del atributo del tipo (si está presente).
- Si el atributo de tipo no está presente, la variable se considera una string.
- Si el tipo de variable especificada en
<Source>
no es de tipo mensaje ni string, esa es la causa del error. Puedes obtener información sobre las variables comunes y sus tipos en la referencia de variables.
A modo de ejemplo, supongamos que la política ExtractVariables se usa para extraer el valor de una carga útil JSON y se establece el valor en la variable
EmployeeID
de tipo de número entero, como se muestra a continuación:<?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>
Ahora, recuerda que la variable
EmployeeID
se usa en el elemento<Source>
de la política de XML a JSON:<Source>EmployeeID</Source>
Debido a que el tipo de esta variable es
Integer
, que no es un tipo<Source>
válido, el proxy de API falla con el siguiente error:steps.json2xml.InvalidSourceType
Solución
Asegúrate de que el tipo de variable que se usa para especificar el elemento <Source>
sea válido. Los tipos <Source>
válidos son message
y string
.
Para evitar el error anterior con la política JSONToXML, puedes usar la variable de solicitud, que es del tipo mensaje, o cualquier otra string que sea una carga útil JSON válida.