Przeglądasz dokumentację Apigee Edge.
Przejdź do
Dokumentacja Apigee X. informacje.
SourceUnavailable
Kod błędu
steps.json2xml.SourceUnavailable
Treść odpowiedzi na błąd
{ "fault": { "faultstring": "JSONToXML[policy_name]: Source [source_variable] is not available", "detail": { "errorcode": "steps.json2xml.SourceUnavailable" } } }
Przykładowy błąd
{
"fault": {
"faultstring": "JSONToXML[Convert-JSONToXML]: Source response is not available",
"detail": {
"errorcode": "steps.json2xml.SourceUnavailable"
}
}
}
Przyczyna
Ten błąd występuje, jeśli zmienna message określona w elemencie <Source>
zasady JSON na XML to:
- poza zakresem (niedostępne w ramach konkretnego procesu, w którym są realizowane zasady) lub
- Nie można go rozwiązać (nie jest zdefiniowany)
Ten błąd występuje na przykład wtedy, gdy zasada JSON na XML powinna być wykonywana w przepływie żądania, ale element <Source>
jest ustawiony na zmienną response
, której nie ma w przepływie żądania.
Diagnostyka
Wskaż zasadę JSON na XML, w której wystąpił błąd, i nazwę zmiennej, która jest niedostępna. Oba te elementy znajdziesz w elemencie
faultstring
odpowiedzi na błąd. Na przykład w tymfaultstring
nazwa zasad toConvert-JSONToXML
, a zmienna toresponse
:"faultstring": "JSONToXML[Convert-JSONToXML]: Source response is not available"
W nieprawidłowym pliku XML zasady JSON na XML sprawdź, czy nazwa zmiennej ustawiona w elemencie
<Source>
jest zgodna z nazwą zmiennej podaną w ciągu błędu (krok 1 powyżej). Na przykład ta zasada JSON na XML określa zmienną o nazwieresponse
w elemencie<Source>
, która pasuje do zawartościfaultstring
:<?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>
Określ, czy zmienna używana w elemencie
<Source>
jest zdefiniowana i dostępna w procesie, w którym wykonywana jest zasada JSON na XML.Jeśli zmienna to:
- poza zakresem (niedostępne w ramach konkretnego procesu, w którym są realizowane zasady) lub
- Nie można go rozwiązać (nie jest zdefiniowany)
to właśnie jest przyczyną błędu.
Załóżmy na przykład, że zasada konwersji JSON na XML, która jest widoczna powyżej, ma być wykonywana w obiegu żądania. Zwróć uwagę, że zmienna
response
jest używana w elemencie<Source>
zasady JSON na XML. Zmienna odpowiedzi jest dostępna tylko w przepływie odpowiedzi.Zmienna
response
nie występuje w przepływie żądania, dlatego pojawia się kod błędu:steps.json2xml.SourceUnavailable
Rozdzielczość
Upewnij się, że zmienna ustawiona w elemencie <Source>
nieudanej zasady JSON na XML jest zdefiniowana i istnieje w przepływie wykonywania tej zasady.
Aby poprawić widoczną powyżej przykładową zasadę z JSON na XML, możesz zmodyfikować element <Source>
, tak aby korzystał ze zmiennej request
, ponieważ występuje ona w przepływie żądania:
<?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
Kod błędu
steps.json2xml.ExecutionFailed
Treść odpowiedzi na błąd
{ "fault": { "faultstring": "JSONToXML[policy_name]: Execution failed due to reason: Expecting { or [ at line 1", "detail": { "errorcode": "steps.json2xml.ExecutionFailed" } } }
Możliwe przyczyny
Możliwe przyczyny tego błędu:
Przyczyna | Opis |
Brak ładunku wejściowego | Ładunek wejściowy (JSON) jest pusty. |
Nieprawidłowe lub źle sformatowane dane wejściowe | Dane wejściowe (JSON) przekazywane do zasady JSON na XML są nieprawidłowe lub uszkodzone. |
Przyczyna: brak danych wejściowych
Ten błąd występuje w zasadzie JSON na XML, jeśli zawartość (ładunek) zmiennej określonej w elemencie <Source>
jest pusta.
Jeśli na przykład element <Source>
w zasadzie JSON na XML jest ustawiony jako zmienna request
lub response
i powinny zawierać ładunek JSON, ale jeśli ładunek jest pusty, występuje błąd.
Diagnostyka
Znajdź zasadę konwersji pliku JSON na XML, w której wystąpił błąd. Te informacje znajdziesz w elemencie
faultstring
odpowiedzi na błąd. Na przykład w tym elemenciefaultstring
nazwa zasady toConvert-JSONToXML
:"faultstring": "JSONToXML[Convert-JSONToXML]: Execution failed due to reason: Expecting { or [ at line 1"
Sprawdź element
<Source>
w nieudanym pliku XML zasady JSON na XML i określ podaną zmienną. Na przykład w tej zasadzie JSON na XML element<Source>
jest ustawiony narequest
:<?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>
Sprawdź, czy zmienna podana w elemencie
<Source>
w zasadzie jest pusta. Jeśli jest pusty, to właśnie jest przyczyną błędu.W przykładowej zasadzie JSON na XML widocznej powyżej ładunek żądania (czyli treść żądania), który został wysłany przez klienta, jest pusty.
Na przykład:
curl -v "http://<org>-<env>.apigee.net/v1/testjsontoxml" -H "Content-Type: application/json"
Ponieważ ładunek odpowiedzi JSON jest pusty, otrzymujesz kod błędu:
steps.json2xml.ExecutionFailed
Ten błąd może też wystąpić, jeśli element
<Source>
ma wartość response, ale serwer zaplecza przekazuje pusty ładunek danych.
Rozdzielczość
Sprawdź, czy dane wejściowe przekazywane do zasady JSON na XML w elemencie <Source>
są prawidłowym ładunkiem JSON i nie są puste.
Aby rozwiązać problem z przekształcaniem pliku JSON w plik XML, podaj prawidłowy ładunek JSON. Na przykład:
Utwórz plik o nazwie
city.json
z tą zawartością:{ "Name":"Apigee", "City":"Bengaluru", "Pincode":"560016" }
Wywołanie interfejsu API przy użyciu polecenia cURL w następujący sposób:
curl -v "http://<org>-<env>.apigee.net/v1/testxmltojson" -H "Content-Type: application/json" -X POST -d @company.json
Przyczyna: nieprawidłowe lub błędnie sformatowane dane wejściowe
Ten błąd występuje, jeśli zasada JSON na XML analizuje dane wejściowe, które są nieprawidłowe lub uszkodzone.
Jeśli na przykład w zasadach JSON na XML podany zostanie nieprawidłowy kod JSON,
[
"args": ["name" : "Google" ]
]
pojawi się błąd:
"faultstring": "JSONToXML[Convert-JSONToXML]: Execution failed due to reason: Expecting { or [ at line 1"
Diagnostyka
Wskaż zasadę JSON na XML, w której wystąpił błąd. Te informacje znajdziesz w elemencie
faultstring
odpowiedzi na błąd. Na przykład w tymfaultstring
nazwa zasady toConvert-JSONToXML
:"faultstring": "JSONToXML[Convert-JSONToXML]: Execution failed due to reason: Expecting { or [ at line 1"
Sprawdź element
<Source>
określony w nieprawidłowym pliku XML zasady JSON na XML. Na przykład w tej zasadzie JSON na XML element<Source>
jest ustawiony na zmienną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>
Sprawdź, czy dane wejściowe określone w elemencie
<Source>
są prawidłowym ładunkiem JSON. Jeśli dane wejściowe są nieprawidłowe lub źle sformułowane, to właśnie jest przyczyną błędu.Załóżmy, że do zasady został przekazany następujący nieprawidłowy kod JSON
[ "args": ["name" : "Google" ] ]
Oto przykładowe wywołanie interfejsu API, które pokazuje, jak żądanie zostało przekazane:
curl -v "http://<org>-<env>.apigee.net/v1/testjsontoxml" -H "Content-Type: application/json" -X POST -d '[ "args" : ["name" : "Google" ]]'
Ładunek JSON przekazany w żądaniu jest nieprawidłowy, ponieważ obiekt JSON uruchamia się i kończy się nawiasami kwadratowymi ([ ]). Z tego powodu wyświetlany jest kod błędu:
steps.json2xml.ExecutionFailed
Ten błąd może też wystąpić, jeśli element
<Source>
jest ustawiony na odpowiedź, ale ładunek odpowiedzi JSON jest nieprawidłowy lub źle sformułowany.
Rozwiązanie
Sprawdź, czy dane wejściowe przekazywane do zasady JSON na XML w elemencie <Source>
są prawidłowe i nie mają nieprawidłowego formatu.
Aby rozwiązać problem z omówioną powyżej przykładową zasadą JSON na XML, prześlij prawidłowe żądanie ładunku JSON w następujący sposób:
{
"args" : {
"name" : "Google"
}
}
OutputVariableIsNotAvailable
Kod błędu
steps.json2xml.OutputVariableIsNotAvailable
Treść odpowiedzi na błąd
{ "fault": { "faultstring": "JSONToXML[policy_name]: Output variable is not available.", "detail": { "errorcode": "steps.json2xml.OutputVariableIsNotAvailable" } } }
Przykładowy błąd
{
"fault": {
"faultstring": "JSONToXML[Check-JSONToXML]: Output variable is not available.",
"detail": {
"errorcode": "steps.json2xml.OutputVariableIsNotAvailable"
}
}
}
Przyczyna
Ten błąd występuje, jeśli zmienna określona w elemencie <Source>
zasady JSON na XML jest typu „ciąg znaków”, a element <OutputVariable>
nie został zdefiniowany. Element <OutputVariable>
jest wymagany, gdy zmienna zdefiniowana w elemencie <Source>
jest typu „ciąg znaków”.
Diagnostyka
Wskaż zasadę JSON na XML, w której wystąpił błąd. Możesz go znaleźć w elemencie
faultstring
w odpowiedzi na błąd. Na przykład w tymfaultstring
nazwa zasady toCheck-JSONToXML
:"faultstring": "JSONToXML[Check-JSONToXML]: Output variable is not available."
W przypadku nieudanej konwersji pliku JSON na XML sprawdź, czy w zasadach nie brakuje elementu
<OutputVariable>
.W tej przykładowej zasadzie JSONToXML brakuje elementu
<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>
Określ typ zmiennej w elemencie
<Source>
:- Znajdź w przesyłce API kod, w którym została zdefiniowana zmienna.
- Gdy już ustalisz, w której z zasad zmienna jest zdefiniowana i wypełniana jako pierwsza, musisz określić jej typ w ten sposób:
- Sprawdź wartość atrybutu typ (jeśli jest dostępny).
- Jeśli brak atrybutu „type”, zmienna jest uznawana za ciąg znaków.
- Jeśli zmienna ma typ ciąg znaków, to jest to przyczyna błędu. Więcej informacji o popularnych zmiennych i ich typach znajdziesz w artykule Przewodnik po zmiennych.
Spójrz na zmienną
PostalCode
w powyższej zasadzie JSON na XML.Załóżmy na przykład, że zasada Przypisz wiadomości służy do przypisania wartości do zmiennej o nazwie
PostalCode
, jak pokazano poniżej:<?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>
Pamiętaj, że typem zmiennej w polu
<AssignVariable>
jest ciąg znaków. ZmiennaPostalCode
jest więc ciągiem znaków.Przypomnijmy teraz, że w elemencie
<Source>
zasady JSONToXML używana jest zmiennaPostalCode
:<Source>PostalCode</Source>
Ponieważ
PostalCode
jest ciągiem znaków i brakuje elementu<OutputVariable>
, pojawia się kod błędu:steps.json2xml.OutputVariableIsNotAvailable
Rozdzielczość
Upewnij się, że jeśli zmienna określona w elemencie <Source>
zasady JSONToXML jest typu ciąg znaków, element <OutputVariable>
jest zdefiniowany w zasadzie.
Aby poprawić omówioną powyżej zasadę JSONToXML, dołącz element <OutputVariable>
w sposób pokazany poniżej.
<?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
Kod błędu
steps.json2xml.InCompatibleTypes
Treść odpowiedzi na błąd
{ "fault": { "faultstring": "JSONToXML[policy_name]: String can not be assigned to message type.", "detail": { "errorcode": "steps.json2xml.InCompatibleTypes" } } }
Przykładowy błąd
{
"fault": {
"faultstring": "JSONToXML[JSONToXML_checktype]: String can not be assigned to message type.",
"detail": {
"errorcode": "steps.json2xml.InCompatibleTypes"
}
}
}
Przyczyna
Ten błąd występuje, gdy typ zmiennej zdefiniowanej w elemencie <Source>
i elemencie <OutputVariable>
jest inny. Konieczne jest, aby typ zmiennych w elemencie <Source>
i elemencie <OutputVariable>
był zgodny.
Prawidłowe typy to message
i string
.
Diagnostyka
Zidentyfikuj zasady JSON na XML, w których wystąpił błąd. Możesz go znaleźć w elemencie
faultstring
w odpowiedzi na błąd. Na przykład w tym elemenciefaultstring
nazwa zasady toJSONToXML_checktype
:"faultstring": "JSONToXML[JSONToXML_checktype]: String can not be assigned to message type."
W nieprawidłowej zasadzie JSON na XML zwróć uwagę na wartości określone w
<OutputVariable>
i<Source>
.Rozważ tę przykładową zasadę:
<?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>
Określ typ zmiennej określonej w elementach
<Source>
i<OutputVariable>
:- Znajdź kod w obrębie serwera proxy interfejsu API, w którym najpierw zdefiniowano każdą z tych zmiennych.
- Po ustaleniu zasady, według której zmienna jest zdefiniowana i wypełniana jako pierwsza, musisz określić jej typ w ten sposób:
- Sprawdź wartość atrybutu typ (jeśli jest dostępny).
- Jeśli atrybut type jest nieobecny, zmienna jest uznawana za ciąg znaków.
- Jeśli typ zmiennej określonej w parametrye
<Source>
to ciąg znaków, a typ zmiennej<OutputVariable>
to wiadomość lub odwrotnie, jest to przyczyna błędu. Więcej informacji o typowych zmiennych i ich typach znajdziesz w dokumentacji zmiennych.
Weźmy za przykład zasadę Assign Message (Przypisz wiadomość), która służy do przypisywania wartości do zmiennej o nazwie
PostalCode
. Jak pokazano poniżej:<?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>
Pamiętaj, że typem zmiennej w polu
<AssignVariable>
jest ciąg znaków. dlatego zmiennaPostalCode
jest typu ciąg znaków.Przypomnijmy teraz, że w elemencie
<Source>
zasady JSONToXML używana jest zmiennaPostalCode
:<Source>PostalCode</Source>
Podobnie przypominamy, że w elemencie
<OutputVariable>
zasady JSONToXML używana jest zmiennaresponse
:<OutputVariable>response</OutputVariable>
Zmienna
PostalCode
jest ciągiem znaków, a zmiennaresponse
jest typem komunikatu, więc są one niezgodne i pojawia się kod błędu:steps.json2xml.InCompatibleTypes
Powyższy błąd może wystąpić również wtedy, gdy zmienna w elemencie
<Source>
jest typumessage
, ale zmienna w elemencie<OutputVariable>
jest typu „ciąg znaków”.
Rozdzielczość
Upewnij się, że typ zmiennej zdefiniowanej w elemencie <Source>
i elemencie <OutputVariable>
jest zawsze taki sam. Konieczne jest, aby typ zmiennych w elemencie <Source>
i elemencie <OutputVariable>
był zgodny. Sprawdź, czy elementy <Source>
i <OutputVariable>
są zarówno ciągiem tekstowym, jak i typem komunikatu.
Aby poprawić omówioną powyżej zasadę JSON na XML, możesz zadeklarować inną zmienną PostalCode_output
typu ciągu przy użyciu zasady Przypisywanie wiadomości i użyć tej zmiennej w elemencie <OutputVariable>
zasady JSON na XML.
Zmieniona zasada przypisywania wiadomości:
<?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>
Zmodyfikowana zasada 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
Kod błędu
steps.json2xml.InvalidSourceType
Treść odpowiedzi na błąd
{ "fault": { "faultstring": "JSONToXML[class invalid_class]: Invalid source type class invalid_class. Valid source types are [message, string].", "detail": { "errorcode": "steps.json2xml.InvalidSourceType" } } }
Przykładowy błąd
{
"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"
}
}
}
Przyczyna
Ten błąd występuje, gdy typ zmiennej używanej do zdefiniowania elementu <Source>
jest nieprawidłowy. Prawidłowe typy zmiennych to message
i string
.
Diagnostyka
Zidentyfikuj nieprawidłowy typ źródła używany w zasadzie JSON na XML. Te informacje znajdziesz w komunikacie o błędzie. Na przykład w tym błędzie nieprawidłowym typem jest liczba całkowita.
"faultstring": "JSONToXML[class java.lang.Integer]: Invalid source type class java.lang.Integer. Valid source types are [message, string]."
Sprawdź wszystkie zasady JSON na XML na konkretnym serwerze proxy interfejsu API, na którym wystąpił błąd. W nieprawidłowej zasadzie JSON na XML zanotuj nazwę zmiennej określonej w zasadzie
<Source>
.Przykładowa zasada zawierająca zmienną o nazwie EmployeeID określoną w elemencie
<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>
Określ typ zmiennej w elemencie
<Source>
:- Znajdź kod na serwerze proxy API, w którym najpierw zdefiniowano tę zmienną.
- Po ustaleniu zasady, według której zmienna jest zdefiniowana i wypełniana jako pierwsza, musisz określić jej typ w ten sposób:
- Sprawdź wartość atrybutu typ (jeśli jest dostępny).
- Jeśli brak atrybutu „type”, zmienna jest uznawana za ciąg znaków.
- Jeśli typ zmiennej podany w parametrye
<Source>
nie jest ani typem wiadomości, ani typem ciągu znaków, to jest przyczyną błędu. Więcej informacji o typowych zmiennych i ich typach znajdziesz w dokumentacji zmiennych.
Załóżmy, że reguła ExtractVariables służy do wyodrębniania wartości z ładunku JSON i przypisuje ją zmiennej
EmployeeID
typu całkowitego, jak pokazano poniżej:<?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>
Przypomnijmy teraz, że w elemencie
<Source>
zasady JSONToXML używana jest zmiennaEmployeeID
:<Source>EmployeeID</Source>
Ta zmienna ma typ
Integer
– nie jest to prawidłowy typ<Source>
, dlatego serwer proxy interfejsu API kończy się błędem:steps.json2xml.InvalidSourceType
Rozdzielczość
Upewnij się, że typ zmiennej używanej do określania elementu <Source>
to
prawidłowe. Prawidłowe typy <Source>
to message
i string
.
Aby uniknąć powyższego błędu w zasadach JSONToXML, możesz użyć zmiennej request, która jest typu message lub dowolnego innego ciągu znaków będącego prawidłowym ładunkiem JSON.