Questa pagina si applica ad Apigee e Apigee hybrid.
Visualizza la documentazione di Apigee Edge.
Cosa
Questo criterio converte i messaggi dal formato XML (extensible markup language) a JSON (JavaScript Object Notation), offrendo diverse opzioni per controllare la modalità di conversione dei messaggi.
Supponendo che l'intenzione sia convertire una risposta in formato XML in una risposta in formato JSON, il criterio verrà associato a un flusso di risposta (ad esempio Response / ProxyEndpoint/PostFlow).
Questo criterio è un criterio standard e può essere implementato in qualsiasi tipo di ambiente. Per informazioni sui tipi di criteri e sulla loro disponibilità in base a ciascun tipo di ambiente, consulta Tipi di criteri.
Informazioni
In uno scenario di mediazione tipico, un criterio JSON to XML nel flusso di richieste in entrata è spesso associato a un criterio XML to JSON nel flusso di risposta in uscita. Combinando i criteri in questo modo, è possibile esporre un'API JSON per i servizi di backend che supportano nativamente solo XML.
Per gli scenari in cui le API vengono utilizzate da diverse app client che potrebbero richiedere JSON o XML, il formato della risposta può essere impostato dinamicamente configurando i criteri JSON to XML e XML to JSON in modo che vengano eseguiti in modo condizionale. Consulta la sezione Voci e condizioni del flusso per un'implementazione di questo scenario.
Esempi
Per una discussione dettagliata sulla conversione tra JSON e XML, consulta questo articolo.
Conversione di una risposta
<XMLToJSON name="ConvertToJSON"> <Options> </Options> <OutputVariable>response</OutputVariable> <Source>response</Source> </XMLToJSON>
Questa configurazione, che è la configurazione minima richiesta per convertire XML in
JSON, prende un messaggio di risposta in formato XML come origine e poi crea un messaggio
in formato JSON che viene inserito in response
OutputVariable. Apigee
utilizza automaticamente i contenuti di questa variabile come messaggio per il passaggio di elaborazione successivo.
Riferimento elemento
Di seguito sono riportati gli elementi e gli attributi che puoi configurare in questo criterio.
<XMLToJSON async="false" continueOnError="false" enabled="true" name="XML-to-JSON-1"> <DisplayName>XML to JSON 1</DisplayName> <Source>response</Source> <OutputVariable>response</OutputVariable> <Options> <RecognizeNumber>true</RecognizeNumber> <RecognizeBoolean>true</RecognizeBoolean> <RecognizeNull>true</RecognizeNull> <NullValue>NULL</NullValue> <NamespaceBlockName>#namespaces</NamespaceBlockName> <DefaultNamespaceNodeName>&</DefaultNamespaceNodeName> <NamespaceSeparator>***</NamespaceSeparator> <TextAlwaysAsProperty>true</TextAlwaysAsProperty> <TextNodeName>TEXT</TextNodeName> <AttributeBlockName>FOO_BLOCK</AttributeBlockName> <AttributePrefix>BAR_</AttributePrefix> <OutputPrefix>PREFIX_</OutputPrefix> <OutputSuffix>_SUFFIX</OutputSuffix> <StripLevels>2</StripLevels> <TreatAsArray> <Path unwrap="true">teachers/teacher/studentnames/name</Path> </TreatAsArray> </Options> <!-- Use Options or Format, not both --> <Format>yahoo</Format> </XMLToJSON>
Attributi <XMLtoJSON>
<XMLtoJSON async="false" continueOnError="false" enabled="true" name="XML-to-JSON-1">
La tabella seguente descrive gli attributi comuni a tutti gli elementi principali dei criteri:
Attributo | Descrizione | Predefinito | Presenza |
---|---|---|---|
name |
Il nome interno del criterio. Il valore dell'attributo Se vuoi, utilizza l'elemento |
N/D | Obbligatorio |
continueOnError |
Imposta su Imposta su |
falso | Facoltativo |
enabled |
Imposta su Imposta |
true | Facoltativo |
async |
Questo attributo è stato ritirato. |
falso | Ritirato |
Elemento <DisplayName>
Da utilizzare insieme all'attributo name
per etichettare il criterio nell'editor proxy dell'interfaccia utente di gestione con un nome diverso in linguaggio naturale.
<DisplayName>Policy Display Name</DisplayName>
Predefinito |
N/D Se ometti questo elemento, viene utilizzato il valore dell'attributo |
---|---|
Presenza | Facoltativo |
Tipo | Stringa |
Elemento <Source>
La variabile che specifica il messaggio XML da convertire in JSON.
L'intestazione del tipo di contenuto HTTP del messaggio di origine deve essere impostata su
application/xml
, altrimenti il criterio non viene applicato.
Se <Source>
non è definito, viene trattato come message
,
che si risolve in request
quando il criterio è associato a un flusso di richieste o response
quando il criterio è associato a un flusso di risposta.
Se la variabile di origine non può essere risolta o se si risolve in un tipo diverso da messaggio, il criterio genera un errore.
<Source>response</Source>
Predefinito | Il valore dell'elemento Source |
---|---|
Presenza | Facoltativo |
Tipo | Messaggio |
Elemento <OutputVariable>
Specifica dove archiviare l'output della conversione del formato XML in JSON. In genere, questo elemento non è incluso nella configurazione dei criteri.
Apigee analizza il payload del messaggio XML specificato in Source
, lo converte in JSON, memorizza il risultato nel payload di OutputVariable
e imposta l'intestazione HTTP Content-type del messaggio OutputVariable
su application/json
.
Se OutputVariable
non è specificato, viene utilizzato il valore di Source
per impostazione predefinita. Ad esempio, se source
è response
,
OutputVariable
avrà come valore predefinito response
.
<OutputVariable>response</OutputVariable>
Predefinito | il messaggio specificato in Source |
---|---|
Presenza | Facoltativo |
Tipo | Messaggio |
<Options>
Le opzioni ti consentono di controllare la conversione da XML a JSON. Utilizza il gruppo <Options>
, che ti consente di aggiungere impostazioni di conversione specifiche, o l'elemento <Format>
, che ti consente di fare riferimento a un modello di opzioni predefinite. Non puoi utilizzare sia <Options>
che
<Format>
.
<Options>
è obbligatorio se non viene utilizzato <Format>
.
Elemento <RecognizeNumber>
Se il valore è true, i campi numerici nel payload XML mantengono il formato originale.
<RecognizeNumber>true</RecognizeNumber>
Considera il seguente esempio XML:
<a> <b>100</b> <c>value</c> </a>
Se RecognizeNumber
è true
, il criterio lo converte in:
{ "a": { "b": 100, "c": "value" } }
Se RecognizeNumber
è false
, il criterio lo converte in:
{ "a": { "b": "100", "c": "value" } }
Predefinito | falso |
---|---|
Presenza | Facoltativo |
Tipo | Booleano |
Elemento <RecognizeBoolean>
Consente alla conversione di mantenere i valori booleani true/false anziché trasformarli in stringhe.
<RecognizeBoolean>true</RecognizeBoolean>
Per il seguente esempio XML:
<a> <b>true</b> <c>value</c> </a>
Se RecognizeBoolean
è true
, il criterio lo converte in:
{ "a": { "b": true, "c": "value" } }
Se RecognizeBoolean
è false
, il criterio lo converte in:
{ "a": { "b": "true", "c": "value" } }
Predefinito | falso |
---|---|
Presenza | Facoltativo |
Tipo | Booleano |
Elemento <RecognizeNull>
Consente di convertire i valori vuoti in valori null.
<RecognizeNull>true</RecognizeNull>
Per il seguente XML:
<a> <b></b> <c>value</c> </a>
Se RecognizeNull
è true
e non è presente un'opzione NullValue
, questo XML viene convertito in:
{ "a": { "b": null, "c": "value" } }
Se RecognizeNull
è false
, questo XML si converte in:
{ "a": { "b": {}, "c": "value" } }
Predefinito | falso |
---|---|
Presenza | Facoltativo |
Tipo | Booleano |
Elemento <NullValue>
Indica il valore in cui devono essere convertiti i valori null riconosciuti nel messaggio di origine. Per impostazione predefinita, il valore è null
. Questa opzione è efficace solo se RecognizeNull
è true.
<NullValue>not-present</NullValue>
Per il seguente XML:
<a> <b></b> <c>value</c> </a>
Se RecognizeNull
è true
e NullValue
non è specificato,
questo XML viene convertito in:
{ "a": { "b": null, "c": "value" } }
Se RecognizeNull
è true
e NullValue
è
not-present
, questo XML si converte in:
{ "a": { "b": "not-present", "c": "value" } }
Predefinito | null |
---|---|
Presenza | Facoltativo |
Tipo | Stringa |
Opzioni dello spazio dei nomi
Per impostazione predefinita, questo criterio omette gli spazi dei nomi XML nel JSON generato. Per specificare che gli spazi dei nomi nel documento XML devono essere tradotti nel JSON generato, utilizza questi elementi insieme.
<NamespaceBlockName>#namespaces</NamespaceBlockName> <DefaultNamespaceNodeName>&</DefaultNamespaceNodeName> <NamespaceSeparator>***</NamespaceSeparator>
Considera il seguente esempio XML:
<a xmlns="http://ns.com" xmlns:ns1="http://ns1.com"> <ns1:b>value</ns1:b> </a>
Se NamespaceSeparator
non è specificato, viene generata la seguente struttura JSON:
{ "a": { "b": "value" } }
Se gli elementi NamespaceBlockName
, DefaultNamespaceNodeName
e
NamespaceSeparator
sono specificati come #namespaces
, &
e ***
, rispettivamente, viene generata la seguente struttura JSON:
{ "a": { "#namespaces": { "&": "http://ns.com", "ns1": "http://ns1.com" }, "ns1***b": "value" } }
Predefinito | Nessuno. Se <NamespaceBlockName> non è specificato, il criterio genererà un output JSON che non fa riferimento a spazi dei nomi XML, indipendentemente dal fatto che il messaggio di origine faccia riferimento a spazi dei nomi. |
---|---|
Presenza | Facoltativo Tuttavia, se specifichi <NamespaceBlockName> , devi specificare anche gli altri due elementi. |
Tipo | Stringhe |
Opzioni di testo
Utilizza questi elementi insieme.
<TextAlwaysAsProperty>true|false</TextAlwaysAsProperty> <TextNodeName>TEXT</TextNodeName>
Quando il criterio rileva un elemento XML che contiene solo un singolo nodo di testo come elemento secondario, il criterio traduce il contenuto di testo dell'elemento XML in una proprietà nell'hash JSON.
Quando il criterio rileva un elemento XML contenente più elementi secondari di contenuti misti, queste opzioni ti consentono di controllare l'output JSON di qualsiasi nodo di testo secondario.
Ad esempio, considera questa configurazione delle norme:
<XMLToJSON name='XMLToJSON-1'> <Options> <TextAlwaysAsProperty>???</TextAlwaysAsProperty> <TextNodeName>#text</TextNodeName> </Options> </XMLToJSON>
Per gli input XML specificati, il criterio genererà questi output, a seconda che TextAlwaysAsProperty
sia true
o false
:
Input XML | Output JSON | |
---|---|---|
quando TextAlwaysAsProperty è false |
quando TextAlwaysAsProperty è true |
|
<a>value1</a> |
{ "a": "value1" } |
{ "a": { "#text": "value1" } } |
<a>value1 <b>value2</b> </a> |
{ "a": { "#text": "value1\n", "b": "value2" } } |
{ "a": { "#text": "value1\n", "b": { "#text": "value2" } } } |
Predefinito | <TextAlwaysAsProperty> : false<TextNodeName> : (stringa vuota) |
---|---|
Presenza | Facoltativo |
Tipo | <TextAlwaysAsProperty> : booleano<TextNodeName> : stringa |
Opzioni di attributo
Insieme, questi elementi ti consentono di raggruppare i valori degli attributi in un blocco JSON e di aggiungere prefissi ai nomi degli attributi.
<AttributeBlockName>FOO_BLOCK</AttributeBlockName> <AttributePrefix>BAR_</AttributePrefix>
Considera il seguente esempio XML:
<a attrib1="value1" attrib2="value2"/>
Se entrambi gli attributi (AttributeBlockName
e AttributePrefix
) sono
specificati come definito nell'esempio di conversione da XML a JSON, viene generata la seguente struttura JSON:
{ "a": { "FOO_BLOCK": { "BAR_attrib1": "value1", "BAR_attrib2": "value2" } } }
Se viene specificato solo AttributeBlockName
, viene generata la seguente struttura JSON:
{ "a": { "FOO_BLOCK": { "attrib1": "value1", "attrib2": "value2" } } }
Se viene specificato solo AttributePrefix
, viene generata la seguente struttura JSON:
{ "a": { "BAR_attrib1": "value1", "BAR_attrib2": "value2" } }
Se non viene specificato nessuno dei due, viene generata la seguente struttura JSON:
{ "a": { "attrib1": "value1", "attrib2": "value2" } }
Predefinito | Nessuno. |
---|---|
Presenza | Facoltativo |
Tipo | Stringa |
Elementi <OutputPrefix> e <OutputSuffix>
Utilizza questi elementi insieme per applicare un prefisso e/o un suffisso al JSON generato.
<OutputPrefix>PREFIX_</OutputPrefix> <OutputSuffix>_SUFFIX</OutputSuffix>
Considera il seguente esempio XML:
<a>value</a>
Supponiamo che la configurazione dei criteri sia la seguente:
<XMLToJSON name='XMLToJSON-4'> <Options> <OutputPrefix>{ "result": </OutputPrefix> <OutputSuffix>}</OutputSuffix> </Options> </XMLToJSON>
Viene generata la seguente struttura JSON:
{ "result": { "a": "value" } }
Puoi omettere uno o entrambi i valori OutputPrefix
e OutputSuffix
.
Utilizzando questi elementi, è possibile generare JSON non valido. Ad esempio, utilizzando questa configurazione delle norme:
<XMLToJSON name='XMLToJSON-4'> <Options> <OutputPrefix>PREFIX_</OutputPrefix> </Options> </XMLToJSON>
Il criterio genera quanto segue, che non è JSON valido:
PREFIX_{ "a" : "value" }
Se la configurazione non specifica né OutputPrefix
né OutputSuffix
,
il criterio genera la seguente struttura JSON:
{ "a": "value" }
Predefinito | Vedi gli esempi sopra. |
---|---|
Presenza | Facoltativo |
Tipo | Stringa |
Elemento <StripLevels>
<Options> <StripLevels>4</StripLevels> </Options>
A volte i payload XML, come SOAP, hanno molti livelli principali che non vuoi includere nel JSON convertito. Ecco un esempio di risposta SOAP contenente molti livelli:
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/Schemata-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <soap:Body> <GetCityWeatherByZIPResponse xmlns="http://ws.cdyne.com/WeatherWS/"> <GetCityWeatherByZIPResult> <State>CO</State> <City>Denver</City> <Description>Sunny</Description> <Temperature>62</Temperature> </GetCityWeatherByZIPResult> </GetCityWeatherByZIPResponse> </soap:Body> </soap:Envelope>
Prima di arrivare ai livelli Stato, Città, Descrizione e Temperatura, ci sono 4 livelli.
Senza l'utilizzo di <StripLevels>
, la risposta JSON convertita sarà simile alla seguente:
{ "Envelope" : { "Body" : { "GetCityWeatherByZIPResponse" : { "GetCityWeatherByZIPResult" : { "State" : "CO", "City" : "Denver", "Description" : "Sunny", "Temperature" : "62" } } } } }
Se vuoi rimuovere i primi 4 livelli nella risposta JSON, imposta <StripLevels>4</StripLevels>
, che ti darà il seguente JSON:
{ "State" : "CO", "City" : "Denver", "Description" : "Sunny", "Temperature" : "62" }
Puoi rimuovere i livelli fino al primo elemento che contiene più elementi secondari. Che cosa significa? Vediamo un esempio di JSON più complesso:
{ "Envelope" : { "Body" : { "GetCityForecastByZIPResponse" : { "GetCityForecastByZIPResult" : { "ResponseText" : "City Found", "ForecastResult" : { "Forecast" : [ { "ProbabilityOfPrecipiation" : { "Nighttime" : "00", "Daytime" : 10 } ...
Il livello 3 in questo esempio è GetCityForecastByZIPResponse
, che ha un solo elemento secondario. Pertanto, se utilizzi <StripLevels>3</StripLevels>
(rimuovi i primi tre livelli), il JSON avrà il seguente aspetto:
{ "GetCityForecastByZIPResult" : { "ResponseText" : "City Found", "ForecastResult" : { "Forecast" : [ { "ProbabilityOfPrecipiation" : { "Nighttime" : "00", "Daytime" : 10 } ...
Tieni presente che GetCityForecastByZIPResult
ha più elementi secondari. Poiché si tratta del
primo elemento contenente più elementi secondari, puoi rimuovere questo ultimo livello utilizzando
<StripLevels>4</StripLevels>
, che ti restituirà il seguente
JSON:
{ "ResponseText" : "City Found", "ForecastResult" : { "Forecast" : [ { "ProbabilityOfPrecipiation" : { "Nighttime" : "00", "Daytime" : 10 } ...
Poiché il livello 4 è il primo livello contenente più elementi secondari, non puoi rimuovere i livelli inferiori. Se imposti il livello della striscia su 5, 6, 7 e così via, continuerai a ricevere la risposta riportata sopra.
Predefinito | 0 (nessuna rimozione di livelli) |
---|---|
Presenza | Facoltativo |
Tipo | Numero intero |
Elemento <TreatAsArray>/<Path>
<Options> <TreatAsArray> <Path unwrap="true">teachers/teacher/studentnames/name</Path> </TreatAsArray> </Options>
Questa combinazione di elementi ti consente di assicurarti che i valori di un documento XML vengano sempre tradotti in un array JSON. Questo può essere utile quando il numero di elementi secondari varia per payload diversi. Il comportamento predefinito di Apigee è convertire più elementi secondari dello stesso nome in un array JSON e singoli elementi secondari in un elemento JSON primitivo. L'opzione TreatAsArray
ti consente di assicurarti che gli elementi secondari vengano sempre tradotti in un array JSON.
L'utilizzo di TreatAsArray
può migliorare la struttura del codice successivo che gestisce l'output, poiché i dati dell'array vengono restituiti sempre nello stesso modo. Ad esempio,
la valutazione di un JSONPath di $.teachers.teacher.studentnames.name[0]
restituirà il
valore del nome in modo coerente, indipendentemente dal fatto che il file XML originale contenesse uno o più elementi
name
.
Facciamo un passo indietro e esaminiamo il comportamento predefinito di XML in JSON, quindi scopriamo come controllare l'output utilizzando <TreatAsArray>/<Path>
.
Quando un documento XML contiene un elemento con più occorrenze (cosa che può accadere quando lo schema XML specifica maxOccurs='unbounded'
per l'elemento), il criterio XML to JSON inserisce automaticamente questi valori in un array. Ad esempio, il seguente blocco XML
<teacher> <name>teacherA</name> <studentnames> <name>student1</name> <name>student2</name> </studentnames> </teacher>
...viene convertito automaticamente nel seguente JSON senza alcuna configurazione speciale dei criteri:
{ "teachers" : { "teacher" : { "name" : "teacherA", "studentnames" : { "name" : [ "student1", "student2" ] } } } }
Tieni presente che i due nomi degli studenti sono contenuti in un array.
Tuttavia, se nel documento XML è presente un solo studente, il criterio XML to JSON tratta automaticamente il valore come una singola stringa, non come un array di stringhe, come mostrato nell'esempio seguente:
{ "teachers" : { "teacher" : { "name" : "teacherA", "studentnames" : { "name" : "student1" } } } }
Negli esempi precedenti, dati simili sono stati convertiti in modo diverso, una volta in un array, un'altra in una singola stringa. L'elemento <TreatAsArray>/<Path>
consente di controllare l'output per assicurarti che i nomi degli studenti vengano sempre convertiti in un array anche se è presente un solo valore. Per farlo, identifica il percorso dell'elemento cuyos valori vuoi convertire in un array, come segue:
<Options> <TreatAsArray> <Path>teachers/teacher/studentnames/name</Path> </TreatAsArray> </Options>
La configurazione riportata sopra genererà il JSON come segue:
{ "teachers" : { "teacher" : { "name" : "teacherA", "studentnames" : { "name" : ["student1"] } } } }
Tieni presente che student1 ora si trova in un array. Ora, indipendentemente dal fatto che siano presenti uno o più studenti, puoi recuperarli da un array JSON nel codice utilizzando il seguente JSONPath:
$.teachers.teacher.studentnames.name[0]
L'elemento <Path>
ha anche un attributo unwrap
, spiegato nella
sezione successiva.
Predefinito | N/D |
---|---|
Presenza | Facoltativo |
Tipo | Stringa |
Attributi
<Options> <TreatAsArray> <Path unwrap="true">teachers/teacher/studentnames/name</Path> </TreatAsArray> </Options>
Attributo | Descrizione | Presenza | Tipo |
---|---|---|---|
unwrap |
Valore predefinito: false Rimuove l'elemento dall'output JSON. Utilizzalo per semplificare o appiattire ("estrarre")
il JSON, accorciando anche il JSONPath necessario per recuperare i valori. Ad esempio,
anziché Ecco un esempio di JSON: { "teachers" : { "teacher" : { "name" : "teacherA", "studentnames" : { "name" : [ "student1", "student2" ]}... In questo esempio, potresti sostenere che l'elemento <TreatAsArray> <Path unwrap="true">teachers/teacher</Path> <Path unwrap="true">teachers/teacher/studentnames/name</Path> </TreatAsArray> L'attributo { "teachers" : [{ "name" : "teacherA", "studentnames" : ["student1","student2"] }]... Tieni presente che, poiché l'elemento |
Facoltativo | Booleano |
Per altri esempi e una procedura dettagliata delle funzionalità, consulta questo articolo della community Google Cloud.
<Format>
Il formato ti consente di controllare la conversione da XML a JSON. Inserisci il nome di un
modello predefinito che contiene una combinazione specifica di elementi Options descritti in questo argomento.
I formati predefiniti includono: xml.com
, yahoo
, google
,
badgerFish
.
Utilizza l'elemento <Format>
o il gruppo <Options>
. Non puoi utilizzare
sia <Format>
che <Options>
.
Di seguito sono riportate le definizioni dei formati di ogni modello predefinito.
xml.com
<RecognizeNull>true</RecognizeNull> <TextNodeName>#text</TextNodeName> <AttributePrefix>@</AttributePrefix>
yahoo
<RecognizeNumber>true</RecognizeNumber> <TextNodeName>content</TextNodeName>
<TextNodeName>$t</TextNodeName> <NamespaceSeparator>$</NamespaceSeparator> <TextAlwaysAsProperty>true</TextAlwaysAsProperty>
badgerFish
<TextNodeName>$</TextNodeName> <TextAlwaysAsProperty>true</TextAlwaysAsProperty> <AttributePrefix>@</AttributePrefix> <NamespaceSeparator>:</NamespaceSeparator> <NamespaceBlockName>@xmlns</NamespaceBlockName> <DefaultNamespaceNodeName>$</DefaultNamespaceNodeName>
Sintassi dell'elemento:
<Format>yahoo</Format>
Predefinito | (nessuno) |
---|---|
Valori validi | Uno dei seguenti valori:xml.com , yahoo , google , badgerFish |
Presenza | Facoltativo, ma obbligatorio se non viene utilizzato <Options> . |
Tipo | Stringa |
Schemi
Messaggi di errore
Questa sezione descrive i codici di errore e i messaggi di errore restituiti e le variabili di errore impostate da Apigee quando questo criterio attiva un errore. Queste informazioni sono importanti se stai sviluppando regole di errore per gestire gli errori. Per scoprire di più, consulta Informazioni importanti sugli errori relativi alle norme e Gestione degli errori.
Errori di runtime
Questi errori possono verificarsi durante l'esecuzione del criterio.
Codice guasto | Stato HTTP | Causa | Correggi |
---|---|---|---|
steps.xmltojson.ExecutionFailed |
ExecutionFailed |
Questo errore si verifica quando il payload (XML) di input è vuoto o il codice XML di input non è valido o non ha un formato corretto. | build |
steps.xmltojson.InCompatibleTypes |
ExecutionFailed |
Questo errore si verifica se il tipo di variabile definito nell'elemento <Source> e nell'elemento
<OutputVariable> non è lo stesso. È obbligatorio che il tipo di variabili
contenuto all'interno dell'elemento <Source> e dell'elemento <OutputVariable> corrisponda.
|
build |
steps.xmltojson.InvalidSourceType |
ExecutionFailed |
Questo errore si verifica se il tipo di variabile utilizzata per definire l'elemento <Source> è
non valido.I tipi di variabili validi sono messaggio e stringa. |
build |
steps.xmltojson.OutputVariableIsNotAvailable |
ExecutionFailed |
Questo errore si verifica se la variabile specificata nell'elemento <Source> del criterio XML to
JSON è di tipo stringa e l'elemento <OutputVariable> non è definito.
L'elemento <OutputVariable> è obbligatorio quando la variabile definita nell'elemento <Source> è di tipo stringa. |
build |
steps.xmltojson.SourceUnavailable |
ExecutionFailed |
Questo errore si verifica se la variabile message
specificata nell'elemento <Source> del criterio XML to JSON è:
|
build |
Errori di deployment
Questi errori possono verificarsi quando esegui il deployment di un proxy contenente questo criterio.
Nome dell'errore | Causa | Correggi |
---|---|---|
EitherOptionOrFormat |
Se uno degli elementi <Options> o <Format> non è dichiarato nel criterio XML to JSON, il deployment del proxy API non va a buon fine.
|
build |
UnknownFormat |
Se l'elemento <Format> all'interno del criterio XML to JSON ha un formato sconosciuto definito, il deployment del proxy API non va a buon fine. I formati predefiniti includono:
xml.com , yahoo , google e badgerFish .
|
build |
Variabili di errore
Queste variabili vengono impostate quando si verifica un errore di runtime. Per ulteriori informazioni, consulta Informazioni importanti sugli errori relativi alle norme.
Variabili | Dove | Esempio |
---|---|---|
fault.name="fault_name" |
fault_name è il nome dell'errore, come indicato nella tabella Errori di runtime sopra. Il nome dell'errore è l'ultima parte del codice dell'errore. | fault.name = "SourceUnavailable" |
xmltojson.policy_name.failed |
policy_name è il nome specificato dall'utente del criterio che ha generato l'errore. | xmltojson.XMLtoJSON-1.failed = true |
Esempio di risposta di errore
{ "fault": { "faultstring": "XMLToJSON[XMLtoJSON-1]: Source xyz is not available", "detail": { "errorcode": "steps.xml2json.SourceUnavailable" } } }
Esempio di regola di errore
<faultrule name="VariableOfNonMsgType"></faultrule><FaultRule name="XML to JSON Faults"> <Step> <Name>AM-SourceUnavailableMessage</Name> <Condition>(fault.name Matches "SourceUnavailable") </Condition> </Step> <Step> <Name>AM-BadXML</Name> <Condition>(fault.name = "ExecutionFailed")</Condition> </Step> <Condition>(xmltojson.XMLtoJSON-1.failed = true) </Condition> </FaultRule>
Argomenti correlati
JSON to XML: criteri JSONtoXML