Stai visualizzando la documentazione relativa a Apigee e Apigee ibrido.
Visualizza la documentazione di
Apigee Edge.
SourceUnavailable
Codice di errore
steps.json2xml.SourceUnavailable
Corpo della risposta di errore
{ "fault": { "faultstring": "JSONToXML[policy_name]: Source [source_variable] is not available", "detail": { "errorcode": "steps.json2xml.SourceUnavailable" } } }
Errore di esempio
{
"fault": {
"faultstring": "JSONToXML[Convert-JSONToXML]: Source response is not available",
"detail": {
"errorcode": "steps.json2xml.SourceUnavailable"
}
}
}
Causa
Questo errore si verifica se la variabile message specificata nell'elemento <Source>
del criterio JSON to XML è:
- Fuori ambito (non disponibile nel flusso specifico in cui viene eseguito il criterio) o
- Non può essere risolto (non è definito)
Ad esempio, questo errore si verifica se il criterio JSON to XML deve essere eseguito nel flusso di richieste, ma l'elemento <Source>
è impostato sulla variabile response
, che non esiste nel flusso di richieste.
Diagnosi
Identifica il criterio da JSON a XML in cui si è verificato l'errore e il nome della variabile che non è disponibile. Puoi trovare entrambi gli elementi nell'elemento
faultstring
della risposta di errore. Ad esempio, nel seguentefaultstring
, il nome del criterio èConvert-JSONToXML
e la variabile èresponse
:"faultstring": "JSONToXML[Convert-JSONToXML]: Source response is not available"
Nel file XML del criterio JSON to XML non riuscito, verifica che il nome della variabile impostata nell'elemento
<Source>
corrisponda al nome della variabile identificato nella stringa di errore (passaggio 1 sopra). Ad esempio, il seguente criterio da JSON a XML specifica una variabile denominataresponse
nell'elemento<Source>
, che corrisponde al contenuto infaultstring
:<?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 se la variabile utilizzata nell'elemento
<Source>
è definita e disponibile nel flusso in cui viene eseguito il criterio da JSON a XML.Se la variabile è:
- Fuori ambito (non disponibile nel flusso specifico in cui viene eseguito il criterio) o
- Non può essere risolto (non è definito)
allora è la causa dell'errore.
Ad esempio, supponiamo che il criterio da JSON a XML mostrato sopra debba essere eseguito nel flusso request. Ricorda che la variabile
response
viene utilizzata nell'elemento<Source>
del criterio da JSON a XML. La variabile di risposta è disponibile solo nel flusso di risposta.Poiché la variabile
response
non esiste nel flusso di richiesta, ricevi il codice di errore:steps.json2xml.SourceUnavailable
Risoluzione
Assicurati che la variabile impostata nell'elemento <Source>
del criterio da JSON a XML non riuscito sia definita e che esista nel flusso in cui viene eseguito il criterio.
Per correggere il criterio da JSON a XML di esempio mostrato sopra, puoi modificare l'elemento <Source>
in modo che utilizzi la variabile request
, perché esiste nel flusso di richiesta:
<?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
Codice di errore
steps.json2xml.ExecutionFailed
Corpo della risposta di errore
{ "fault": { "faultstring": "JSONToXML[policy_name]: Execution failed due to reason: Expecting { or [ at line 1", "detail": { "errorcode": "steps.json2xml.ExecutionFailed" } } }
Cause possibili
Le possibili cause di questo errore sono:
Causa | Descrizione |
Payload input mancante | Il payload di input (JSON) è vuoto. |
Input non valido o con formato non corretto | L'input (JSON) passato al criterio JSON to XML non è valido o non è formattato correttamente. |
Causa: payload di input mancante
Nel criterio da JSON a XML se i contenuti (payload) della variabile specificata nell'elemento <Source>
sono vuoti, si verifica questo errore.
Ad esempio, se l'elemento <Source>
nel criterio JSON to XML è impostato come variabile request
o response
e dovrebbe contenere un payload JSON, ma il payload è vuoto, si verifica l'errore.
Diagnosi
Identifica il criterio JSON to XML in cui si è verificato l'errore. Puoi trovare queste informazioni nell'elemento
faultstring
della risposta all'errore. Ad esempio, nel seguentefaultstring
, il nome del criterio èConvert-JSONToXML
:"faultstring": "JSONToXML[Convert-JSONToXML]: Execution failed due to reason: Expecting { or [ at line 1"
Esamina l'elemento
<Source>
nel file XML del criterio JSON to XML con errore e determina la variabile specificata. Ad esempio, il seguente criterio JSON to XML ha l'elemento<Source>
impostato surequest
:<?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>
Controlla se la variabile specificata per l'elemento
<Source>
nel criterio è vuota. Se è vuoto, è la causa dell'errore.Nel criterio da JSON a XML di esempio mostrato sopra, il payload della richiesta (ovvero il corpo della richiesta) inviato dal client è vuoto.
Ad esempio:
curl -v "http://your_host_alias/v1/testjsontoxml" -H "Content-Type: application/json"
dove your_host_alias è un dominio pubblico utilizzato per accedere alle API, come configurato nella proprietà
virtualhosts.hostAliases
del file delle sostituzioni. Consulta Specificare le sostituzioni della configurazione.Poiché il payload della risposta JSON è vuoto, viene visualizzato il codice di errore:
steps.json2xml.ExecutionFailed
Questo errore può verificarsi anche se l'elemento
<Source>
è impostato su response, ma il server di backend passa un payload vuoto.
Risoluzione
Assicurati che l'input passato al criterio JSON to XML nell'elemento <Source>
sia un payload JSON valido e non vuoto.
Per risolvere il problema relativo al criterio da JSON a XML di esempio, trasmetti un payload JSON valido. Ad esempio:
Crea un file denominato
city.json
con i seguenti contenuti:{ "Name":"Apigee", "City":"Bengaluru", "Pincode":"560016" }
Effettua la chiamata API utilizzando un comando curl come segue:
curl -v "http://your_host_alias/v1/testxmltojson" -H "Content-Type: application/json" -X POST -d @company.json
dove your_host_alias è un dominio pubblico utilizzato per accedere alle API, come configurato nella proprietà
virtualhosts.hostAliases
del file delle sostituzioni. Consulta Specificare le sostituzioni della configurazione.
Causa: input non valido o con formato non corretto
Se il criterio da JSON a XML analizza un input non valido o non valido, viene visualizzato questo errore.
Ad esempio, se viene fornito il seguente codice JSON non valido come input per il criterio JSON-XML,
[
"args": ["name" : "Google" ]
]
viene visualizzato l'errore:
"faultstring": "JSONToXML[Convert-JSONToXML]: Execution failed due to reason: Expecting { or [ at line 1"
Diagnosi
Identifica il criterio JSON to XML in cui si è verificato l'errore. Puoi trovare queste informazioni nell'elemento
faultstring
della risposta all'errore. Ad esempio, nel seguentefaultstring
, il nome del criterio èConvert-JSONToXML
:"faultstring": "JSONToXML[Convert-JSONToXML]: Execution failed due to reason: Expecting { or [ at line 1"
Esamina l'elemento
<Source>
specificato nel criterio XML da JSON non riuscito. Ad esempio, il seguente criterio JSON to XML ha l'elemento<Source>
impostato sulla variabilerequest
:<?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>
Verifica che l'input specificato nell'elemento
<Source>
sia un payload JSON valido. Se l'input non è valido o ha un formato non corretto, è la causa dell'errore.Supponiamo che il seguente JSON non valido sia stato passato al criterio
[ "args": ["name" : "Google" ] ]
Ecco la chiamata API di esempio che mostra come è stata passata la richiesta:
curl -v "http://your_host_alias/v1/testjsontoxml" -H "Content-Type: application/json" -X POST -d '[ "args" : ["name" : "Google" ]]'
dove your_host_alias è un dominio pubblico utilizzato per accedere alle API, come configurato nella proprietà
virtualhosts.hostAliases
del file delle sostituzioni. Consulta Specificare le sostituzioni della configurazione.Il payload JSON passato nella richiesta non è valido perché l'oggetto JSON inizia e termina con le parentesi quadre ([ ]). Per questo motivo, ricevi il codice di errore:
steps.json2xml.ExecutionFailed
Questo errore può verificarsi anche se l'elemento
<Source>
è stato impostato su response, ma il payload della risposta JSON non è valido o non ha un formato corretto.
Risoluzione
Assicurati che l'input passato al criterio JSON to XML nell'elemento <Source>
sia valido e non con formato non corretto.
Per risolvere il problema relativo al criterio JSON to XML di esempio discusso sopra, passa una richiesta di payload JSON valida come segue:
{
"args" : {
"name" : "Google"
}
}
OutputVariableIsNotAvailable
Codice di errore
steps.json2xml.OutputVariableIsNotAvailable
Corpo della risposta di errore
{ "fault": { "faultstring": "JSONToXML[policy_name]: Output variable is not available.", "detail": { "errorcode": "steps.json2xml.OutputVariableIsNotAvailable" } } }
Errore di esempio
{
"fault": {
"faultstring": "JSONToXML[Check-JSONToXML]: Output variable is not available.",
"detail": {
"errorcode": "steps.json2xml.OutputVariableIsNotAvailable"
}
}
}
Causa
Questo errore si verifica se la variabile specificata nell'elemento <Source>
del criterio JSON to XML è di tipo stringa e l'elemento <OutputVariable>
non è definito. L'elemento <OutputVariable>
è obbligatorio quando la variabile definita nell'elemento <Source>
è di tipo stringa.
Diagnosi
Identifica il criterio da JSON a XML in cui si è verificato l'errore. Puoi trovarlo nell'elemento
faultstring
della risposta di errore. Ad esempio, nel seguentefaultstring
, il nome del criterio èCheck-JSONToXML
:"faultstring": "JSONToXML[Check-JSONToXML]: Output variable is not available."
Nel criterio JSON to XML non riuscito, verifica se manca
<OutputVariable>
.Il seguente criterio JSONToXML di esempio manca dell'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 il tipo di variabile specificato nell'elemento
<Source>
:- Individua il codice all'interno del proxy API in cui è stata definita per la prima volta la variabile.
- Una volta stabilito il criterio in cui la variabile viene definita e compilata per primo, devi stabilire il tipo di variabile come segue:
- Controlla il valore dell'attributo type (se presente).
- Se l'attributo type non è presente, la variabile viene considerata una stringa.
- Se il tipo di variabile è stringa, questo è la causa dell'errore. Per saperne di più sulle variabili comuni e sui relativi tipi, consulta la documentazione di riferimento sulle variabili.
Ad esempio, guarda la variabile
PostalCode
nel criterio da JSON a XML riportato sopra.Ad esempio, considera che viene utilizzato un criterio Assegna messaggio per assegnare un valore a una variabile denominata
PostalCode
, come mostrato di seguito:<?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>
Tieni presente che il tipo di variabile impostato in
<AssignVariable>
è stringa. Pertanto, la variabilePostalCode
è di tipo stringa.A questo punto, ricorda che la variabile
PostalCode
viene utilizzata nell'elemento<Source>
del criterio JSONToXML:<Source>PostalCode</Source>
Poiché
PostalCode
è di tipo stringa e manca l'elemento<OutputVariable>
, ricevi il codice di errore:steps.json2xml.OutputVariableIsNotAvailable
Risoluzione
Assicurati che se la variabile specificata nell'elemento <Source>
del criterio JSONToXML sia di tipo stringa, l'elemento <OutputVariable>
sia definito all'interno del criterio.
Per correggere il criterio JSONToXML discusso sopra, includi un elemento <OutputVariable>
come mostrato di seguito.
<?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
Codice di errore
steps.json2xml.InCompatibleTypes
Corpo della risposta di errore
{ "fault": { "faultstring": "JSONToXML[policy_name]: String can not be assigned to message type.", "detail": { "errorcode": "steps.json2xml.InCompatibleTypes" } } }
Errore di esempio
{
"fault": {
"faultstring": "JSONToXML[JSONToXML_checktype]: String can not be assigned to message type.",
"detail": {
"errorcode": "steps.json2xml.InCompatibleTypes"
}
}
}
Causa
Questo errore si verifica se il tipo di variabile definita nell'elemento <Source>
e nell'elemento <OutputVariable>
non sono uguali. È obbligatorio che il tipo delle variabili contenute nell'elemento <Source>
e nell'elemento <OutputVariable>
corrisponda.
I tipi validi sono message
e string
.
Diagnosi
Identifica il criterio JSON to XML in cui si è verificato l'errore. Puoi trovarlo nell'elemento
faultstring
della risposta di errore. Ad esempio, nel seguentefaultstring
, il nome del criterio èJSONToXML_checktype
:"faultstring": "JSONToXML[JSONToXML_checktype]: String can not be assigned to message type."
Nel criterio JSON to XML non riuscito, prendi nota dei valori specificati in
<OutputVariable>
e<Source>
.Considera il seguente criterio di esempio:
<?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 il tipo di variabile specificato negli elementi
<Source>
e<OutputVariable>
:- Individua il codice all'interno del proxy API, dove ciascuna di queste variabili è stata definita per prima.
- Una volta individuato il criterio in cui la variabile è definita e compilata per la prima volta, devi determinare il tipo di variabile come segue:
- Controlla il valore dell'attributo type (se presente).
- Se l'attributo type non è presente, la variabile viene considerata come una stringa.
- Se il tipo della variabile specificata in
<Source>
è stringa, mentre il tipo di<OutputVariable>
è messaggio o viceversa, questa è la causa dell'errore. Per saperne di più sulle variabili comuni e sui relativi tipi, consulta il Riferimento sulle variabili.
Considera ad esempio il criterio Assegna messaggio utilizzato per assegnare un valore a una variabile denominata
PostalCode
, come illustrato di seguito:<?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>
Tieni presente che il tipo di variabile impostato in
<AssignVariable>
è stringa; pertanto, la variabilePostalCode
è di tipo stringa.Ora ricorda che la variabile
PostalCode
viene utilizzata nell'elemento<Source>
del criterio JSONToXML:<Source>PostalCode</Source>
Analogamente, ricorda che la variabile
response
viene utilizzata nell'elemento<OutputVariable>
del criterio JSONToXML:<OutputVariable>response</OutputVariable>
Poiché
PostalCode
è di tipo stringa, mentre la variabileresponse
è di tipo messaggio, non sono tipi compatibili, perciò ricevi il codice di errore:steps.json2xml.InCompatibleTypes
L'errore riportato sopra può verificarsi anche se la variabile nell'elemento
<Source>
è di tipomessage
, ma la variabile nell'elemento<OutputVariable>
è di tipo stringa.
Risoluzione
Assicurati che il tipo di variabile definito nell'elemento <Source>
e nell'elemento <OutputVariable>
sia sempre lo stesso. È obbligatorio che il tipo delle variabili contenute nell'elemento <Source>
e nell'elemento <OutputVariable>
corrisponda. In altre parole, assicurati che il tipo di elementi <Source>
e <OutputVariable>
sia di tipo stringa o messaggio.
Per correggere il criterio JSON to XML discusso sopra, puoi dichiarare un'altra variabile PostalCode_output
di tipo stringa utilizzando il criterio Assegna messaggio e utilizzare questa variabile nell'elemento <OutputVariable>
del criterio JSON to XML.
Criterio Assegna messaggio modificato:
<?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>
Criterio JSONToXML modificato:
<?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
Codice di errore
steps.json2xml.InvalidSourceType
Corpo della risposta di errore
{ "fault": { "faultstring": "JSONToXML[class invalid_class]: Invalid source type class invalid_class. Valid source types are [message, string].", "detail": { "errorcode": "steps.json2xml.InvalidSourceType" } } }
Errore di esempio
{
"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
Questo errore si verifica se il tipo di variabile utilizzato per definire l'elemento <Source>
non è valido.I tipi di variabile validi sono message
e string
.
Diagnosi
Identifica il tipo di origine non valido utilizzato nel criterio JSON to XML. Puoi trovare queste informazioni nel messaggio di errore. Ad esempio, nell'errore seguente, il tipo non valido è Numero intero.
"faultstring": "JSONToXML[class java.lang.Integer]: Invalid source type class java.lang.Integer. Valid source types are [message, string]."
Esamina tutti i criteri JSON to XML nel proxy API specifico in cui si è verificato l'errore. Nel criterio JSON-XML non riuscito, prendi nota del nome della variabile specificata in
<Source>
.Ecco un criterio di esempio con la variabile EmployeeID specificata nell'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 il tipo di variabile specificato nell'elemento
<Source>
:- Individua il codice all'interno del proxy API in cui è stata definita prima questa variabile.
- Una volta individuato il criterio in cui la variabile è definita e compilata per la prima volta, devi determinare il tipo di variabile come segue:
- Controlla il valore dell'attributo type (se presente).
- Se l'attributo type non è presente, la variabile viene considerata come una stringa.
- Se il tipo della variabile specificata in
<Source>
non è né un tipo di messaggio né un tipo di stringa, questo è la causa dell'errore. Per saperne di più sulle variabili comuni e sui relativi tipi, consulta la documentazione di riferimento sulle variabili.
Ad esempio, consideriamo che il criterio ExtractVariables viene utilizzato per estrarre il valore da un payload JSON e imposta il valore sulla variabile
EmployeeID
di tipo numero intero come mostrato di seguito:<?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>
Ora ricorda che la variabile
EmployeeID
viene utilizzata nell'elemento<Source>
del criterio JSONToXML:<Source>EmployeeID</Source>
Poiché il tipo di questa variabile è
Integer
, che non è un tipo<Source>
valido, il proxy API non riesce con l'errore:steps.json2xml.InvalidSourceType
Risoluzione
Assicurati che il tipo di variabile utilizzato per specificare l'elemento <Source>
sia
valido. I tipi di <Source>
validi sono message
e string
.
Per evitare l'errore riportato sopra con il criterio JSONToXML, puoi utilizzare la variabile request di tipo messaggio o qualsiasi altra stringa che sia un payload JSON valido.