Risoluzione degli errori di runtime dei criteri da JSON a XML

Stai visualizzando la documentazione di Apigee Edge.
Vai alla documentazione di Apigee X.
informazioni

SourceUnavailable

Codice di errore

steps.json2xml.SourceUnavailable

Corpo della risposta all'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 da JSON a XML è:

  • Fuori ambito (non disponibile nel flusso specifico in cui viene eseguito il criterio) oppure
  • Non può essere risolto (non è definito)

Ad esempio, questo errore si verifica se il criterio da JSON a XML deve essere eseguito nel flusso della richiesta, ma l'elemento <Source> è impostato sulla variabile response, che non esiste nel flusso della richiesta.

Diagnostica

  1. 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 seguente faultstring, il nome del criterio è Convert-JSONToXML e la variabile è response:

    "faultstring": "JSONToXML[Convert-JSONToXML]: Source response is not available"
    
  2. Nel file XML del criterio da JSON a 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 riportato sopra). Ad esempio, il seguente criterio da JSON a XML specifica una variabile denominata response nell'elemento <Source>, che corrisponde al contenuto faultstring:

    <?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>
    
  3. Determina se la variabile utilizzata nell'elemento <Source> è definita e disponibile nel flusso in cui viene eseguito il criterio da JSON a XML.

  4. Se la variabile è:

    • Fuori ambito (non disponibile nel flusso specifico in cui viene eseguito il criterio) oppure
    • Non può essere risolto (non è definito)

    è questa 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, riceverai 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 esista nel flusso in cui viene eseguito il criterio.

Per correggere il criterio JSON di esempio in XML mostrato sopra, puoi modificare l'elemento <Source> in modo da utilizzare 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 all'errore

{
   "fault": {
        "faultstring": "JSONToXML[policy_name]: Execution failed due to reason: Expecting { or [ at line 1",
        "detail": {
            "errorcode": "steps.json2xml.ExecutionFailed"
        }
    }
}

Possibili cause

Le possibili cause di questo errore sono:

Causa Descrizione
Payload di input mancante Il payload di input (JSON) è vuoto.
Input non valido o in formato non valido Il formato di input (JSON) passato al criterio da JSON a XML non è valido o è in un formato non valido.

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 da JSON a XML è impostato come una variabile request o response e dovrebbe contenere un payload JSON, ma se quest'ultimo è vuoto, si verifica l'errore.

Diagnostica

  1. Identifica il criterio da JSON a XML in cui si è verificato l'errore. Puoi trovare queste informazioni nell'elemento faultstring della risposta di errore. Ad esempio, nel seguente faultstring, il nome del criterio è Convert-JSONToXML:

    "faultstring": "JSONToXML[Convert-JSONToXML]: Execution failed due to reason: Expecting { or [ at line 1"
    
  2. Esamina l'elemento <Source> nel file XML del criterio da JSON a XML che non ha superato il test e determina la variabile specificata. Ad esempio, nel seguente criterio da JSON a XML l'elemento <Source> è impostato su request:

    <?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>
    
  3. Controlla se la variabile specificata per l'elemento <Source> nel criterio è vuota. Se il campo è vuoto, è questo il motivo dell'errore.

    Nell'esempio di criterio da JSON a XML mostrato sopra, il payload della richiesta (ovvero il corpo della richiesta) inviato dal client è vuoto.

    Ad esempio:

    curl -v "http://<org>-<env>.apigee.net/v1/testjsontoxml" -H "Content-Type: application/json"
    

    Poiché il payload della risposta JSON è vuoto, riceverai il codice di errore:

    steps.json2xml.ExecutionFailed
    

    Questo errore può verificarsi anche se l'elemento <Source> è impostato in risposta, ma il server di backend trasmette un payload vuoto.

Risoluzione

Assicurati che l'input passato al criterio da JSON a XML nell'elemento <Source> sia payload JSON valido e non sia vuoto.

Per risolvere il problema relativo al criterio da JSON a XML di esempio, trasmetti un payload JSON valido. Ad esempio:

  1. Crea un file denominato city.json con il seguente contenuto:

    {
      "Name":"Apigee",
      "City":"Bengaluru",
      "Pincode":"560016"
    }
    
  2. Effettua la chiamata API utilizzando un comando cURL come segue:

    curl -v "http://<org>-<env>.apigee.net/v1/testxmltojson" -H "Content-Type: application/json" -X POST -d @company.json
    

Causa: input non valido o non corretto

Se il criterio da JSON a XML analizza un input non valido o in un formato non corretto, viene visualizzato questo errore.

Ad esempio, se viene fornito il seguente JSON non valido come input per il criterio JSON to XML:

[
    "args": ["name" : "Google" ]
]

riceverai l'errore:

"faultstring": "JSONToXML[Convert-JSONToXML]: Execution failed due to reason: Expecting { or [ at line 1"

Diagnostica

  1. Identifica il criterio da JSON a XML in cui si è verificato l'errore. Puoi trovare queste informazioni nell'elemento faultstring della risposta di errore. Ad esempio, nel seguente faultstring, il nome del criterio è Convert-JSONToXML:

    "faultstring": "JSONToXML[Convert-JSONToXML]: Execution failed due to reason: Expecting { or [ at line 1"
    
  2. Esamina l'elemento <Source> specificato nel file XML del criterio da JSON a XML che non è stato superato. Ad esempio, il seguente criterio da JSON a XML ha l'elemento <Source> impostato sulla variabile request:

    <?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>
    
  3. Verifica se l'input specificato nell'elemento <Source> è un payload JSON valido. Se l'input non è valido o è in un formato non corretto, è questa la causa dell'errore.

    Supponiamo che il seguente JSON non valido sia stato trasmesso al criterio

    [
        "args": ["name" : "Google" ]
    ]
    

    Ecco la chiamata API di esempio che mostra come è stata trasmessa la richiesta:

    curl -v "http://<org>-<env>.apigee.net/v1/testjsontoxml" -H "Content-Type:
    application/json" -X POST -d '[ "args" : ["name" : "Google" ]]'
    

    Il payload JSON passato nella richiesta non è valido perché l'oggetto JSON inizia e termina con parentesi quadre ([ ]). Per questo motivo, viene visualizzato il codice di errore:

    steps.json2xml.ExecutionFailed

    Questo errore può verificarsi anche se l'elemento <Source> è stato impostato in risposta, ma il payload della risposta JSON non è valido o è in un formato non corretto.

Risoluzione

Assicurati che l'input trasmesso al criterio JSON to XML nell'elemento <Source> sia valido e che non sia in un formato corretto.

Per risolvere il problema relativo al criterio da JSON a 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 all'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.

Diagnostica

  1. 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 seguente faultstring, il nome del criterio è Check-JSONToXML:

    "faultstring": "JSONToXML[Check-JSONToXML]: Output variable is not available."
    
  2. Nel criterio da JSON a XML non riuscito, verifica se manca il valore <OutputVariable>.

    Il seguente criterio JSONToXML di esempio ha un elemento <OutputVariable> mancante:

    <?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>
    
  3. Determina il tipo di variabile specificata nell'elemento <Source>:

    1. Individua il codice all'interno del proxy API in cui la variabile è stata definita per prima.
    2. Una volta compreso il criterio in cui la variabile viene definita e compilata, devi determinarne il tipo nel seguente modo:
      1. Verifica il valore dell'attributo tipo (se presente).
      2. Se l'attributo type non è presente, la variabile viene considerata come una stringa.
    3. Se il tipo di variabile è stringa, l'errore è questo. Per saperne di più sulle variabili comuni e sui loro tipi, consulta Riferimento variabili.

    Ad esempio, controlla la variabile PostalCode nel criterio da JSON a XML riportato sopra.

    Ad esempio, considera che il criterio Assegna messaggio viene utilizzato 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. La variabile PostalCode è di tipo stringa.

    Ora 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>, riceverai il codice di errore:

    steps.json2xml.OutputVariableIsNotAvailable
    

Risoluzione

Assicurati che se la variabile specificata nell'elemento <Source> del criterio JSONToXML è 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 all'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 della variabile definita nell'elemento <Source> e nell'elemento <OutputVariable> non corrispondono. È obbligatorio che il tipo di variabili contenute all'interno dell'elemento <Source> e dell'elemento <OutputVariable> corrisponda.

I tipi validi sono message e string.

Diagnostica

  1. 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 seguente faultstring, il nome del criterio è JSONToXML_checktype:

    "faultstring": "JSONToXML[JSONToXML_checktype]: String can not be assigned to message type."
    
  2. Nel criterio da JSON a XML che non è stato superato il criterio, annota i 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>
    
    
  3. Determina il tipo di variabile specificato negli elementi <Source> e <OutputVariable>:

    1. Individua il codice all'interno del proxy API in cui ciascuna di queste variabili è stata definita per prima.
    2. Una volta compreso il criterio in cui la variabile viene definita e compilata, devi determinarne il tipo nel seguente modo:
      1. Verifica il valore dell'attributo tipo (se presente).
      2. Se l'attributo type non è presente, la variabile viene considerata come una stringa.
    3. Se il tipo di variabile specificato in <Source> è stringa mentre il tipo di <OutputVariable> è messaggio o viceversa, è questo il motivo dell'errore. Per saperne di più sulle variabili comuni e sui loro tipi, consulta Riferimento variabili.

    Ad esempio, considera il criterio Assegna messaggio utilizzato 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 variabile PostalCode è di tipo stringa.

    Ora ricorda che la variabile PostalCode viene utilizzata nell'elemento <Source> del criterio JSONToXML:

    <Source>PostalCode</Source>
    

    Allo stesso modo, ricorda che la variabile response viene utilizzata nell'elemento <OutputVariable> del criterio JSONToXML:

    <OutputVariable>response</OutputVariable>
    

    Poiché PostalCode è di tipo stringa, mentre la variabile response è di tipo di messaggio, non sono compatibili, pertanto riceverai il codice di errore:

    steps.json2xml.InCompatibleTypes
    

    L'errore precedente può verificarsi anche se la variabile nell'elemento <Source> è di tipo message, ma la variabile nell'elemento <OutputVariable> è di tipo stringa.

Risoluzione

Assicurati che il tipo della variabile definita nell'elemento <Source> e nell'elemento <OutputVariable> siano sempre uguali. È obbligatorio che il tipo di variabili contenute all'interno dell'elemento <Source> e dell'elemento <OutputVariable> corrisponda. In altre parole, assicurati che gli elementi <Source> e <OutputVariable> siano di tipo stringa o di messaggio.

Per correggere il criterio da JSON a XML di cui sopra, potresti dichiarare un'altra variabile PostalCode_output di tipo stringa utilizzando il criterio Assegna messaggio e utilizzare questa variabile nell'elemento <OutputVariable> del criterio da JSON a XML.

Criterio di assegnazione dei messaggi 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 all'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.

Diagnostica

  1. Identifica il tipo di origine non valido utilizzato nel criterio da JSON a 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]."
    
  2. Esamina tutti i criteri da JSON a XML nello specifico proxy API in cui si è verificato l'errore. Nel criterio da JSON a XML che non è stato superato, prendi nota del nome della variabile specificata in <Source>.

    Ecco un criterio di esempio in cui la variabile denominata 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>
  1. Determina il tipo di variabile specificato nell'elemento <Source>:

    1. Individua il codice all'interno del proxy API in cui è stata definita per prima questa variabile.
    2. Una volta compreso il criterio in cui la variabile viene definita e compilata, devi determinarne il tipo nel seguente modo:
      1. Verifica il valore dell'attributo tipo (se presente).
      2. Se l'attributo type non è presente, la variabile viene considerata come una stringa.
    3. Se il tipo della variabile specificata in <Source> non è né di messaggio né di stringa, allora l'errore è questo. Per saperne di più sulle variabili comuni e sui loro tipi, consulta Riferimento variabili.

    Supponiamo, ad esempio, che il criterio ExtractVariables venga utilizzato per estrarre il valore da un payload JSON e imposti il valore sulla variabile EmployeeID di tipo 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 genera un errore e genera l'errore:

    steps.json2xml.InvalidSourceType
    

Risoluzione

Assicurati che il tipo della variabile utilizzata per specificare l'elemento <Source> sia valido. I tipi di <Source> validi sono message e string.

Per evitare l'errore precedente con il criterio JSONToXML, puoi utilizzare la variabile di richiesta di tipo message o qualsiasi altra stringa che sia un payload JSON valido.