Wyświetlasz dokumentację Apigee Edge.
Zapoznaj się z dokumentacją 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ład błędu
{
"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>
w zasadach JSON na XML jest:
- poza zakresem (niedostępne w ramach konkretnego procesu, w którym jest wykonywana zasada) lub
- Nie można rozwiązać (niezdefiniowana)
Ten błąd występuje na przykład, gdy zasada konwersji JSON na XML ma być wykonana w przepływie żądania, ale element <Source>
ma wartość zmiennej response
, która nie istnieje w przepływie żądania.
Diagnostyka
Określ zasadę JSON na XML, w której wystąpił błąd, oraz 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 pliku XML zasad w formacie JSON do XML sprawdź, czy nazwa zmiennej ustawiona w elemencie
<Source>
jest zgodna z nazwą zmiennej wskazaną w ciągu błędów (krok 1 opisany powyżej). Na przykład w tym pliku JSON na potrzeby konwersji na XML w elemencie<Source>
określono zmienną o nazwieresponse
, która odpowiada zmiennej w elemenciefaultstring
:<?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 jest wykonywana zasada) lub
- Nie można rozwiązać (niezdefiniowana)
to właśnie jest przyczyną błędu.
Przykładowo załóżmy, że pokazana powyżej zasada JSON na XML powinna być wykonywana w ramach procesu żądania. Zwróć uwagę, że zmienna
response
jest używana w elemencie<Source>
zasady JSON na XML. Zmienne odpowiedzi są dostępne tylko w schemacie odpowiedzi.Ponieważ zmienna
response
nie istnieje w przepływie żądania, otrzymasz kod błędu:steps.json2xml.SourceUnavailable
Rozdzielczość
Upewnij się, że zmienna ustawiona w elemencie <Source>
w nieudanej regule JSON na XML jest zdefiniowana i występuje w przepływie, w którym jest wykonywana.
Aby poprawić widoczną powyżej przykładową zasadę z JSON na XML, możesz zmodyfikować element <Source>
, tak aby używał 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 danych wejściowych | Dane wejściowe (w formacie JSON) są puste. |
Nieprawidłowe lub źle sformatowane dane wejściowe | Dane wejściowe (JSON) przekazane do zasad JSON na XML są nieprawidłowe lub zniekształcone. |
Przyczyna: brak danych wejściowych
W zasadach konwersji JSON na XML ten błąd występuje, gdy 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 tymfaultstring
nazwa zasady toConvert-JSONToXML
:"faultstring": "JSONToXML[Convert-JSONToXML]: Execution failed due to reason: Expecting { or [ at line 1"
Sprawdź element
<Source>
w pliku XML zasad z błędem w konwersji z formatu JSON na XML i ustanów, która zmienna została podana. 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 określona dla elementu
<Source>
w zasadach jest pusta. Jeśli pole jest puste, to właśnie on 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, otrzymasz kod błędu:
steps.json2xml.ExecutionFailed
Ten błąd może też wystąpić, jeśli element
<Source>
jest ustawiony jako odpowiedź, ale serwer backendu przekazuje pusty ładunek.
Rozdzielczość
Upewnij się, że dane przekazane do zasad konwersji JSON na XML w elemencie <Source>
są prawidłowym ładunkiem JSON i nie są puste.
Aby rozwiązać problem z przykładową zasadą JSON na XML, przekaż 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łaj interfejs API, korzystając z 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 źle 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 podasz jako dane wejściowe do zasad JSON na XML nieprawidłowy ciąg tekstowy 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>
podany w kodzie XML zasady JSON do XML. Na przykład w zasadach z formatu JSON na XML element<Source>
ma wartość zmiennejrequest
:<?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 błędnie sformatowane, jest to przyczyna błędu.Załóżmy, że do zasad przekazano nieprawidłowy kod JSON:
[ "args": ["name" : "Google" ] ]
Oto przykład wywołania interfejsu API, który pokazuje, jak przekazano żądanie:
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 zaczyna się i kończy nawiasem kwadratowym ([ ]). Z tego powodu otrzymujesz 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
Upewnij się, że dane wejściowe przekazane do zasad JSON na XML w elemencie <Source>
są prawidłowe i nieuszkodzone.
Aby rozwiązać problem z opisaną powyżej zasadą dotyczącą konwersji z formatu JSON na XML, prześlij prawidłowe żądanie z ładunkiem JSON w ten 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ład błędu
{
"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>
w zasadach JSON na XML jest typu string, a element <OutputVariable>
nie jest zdefiniowany. Element <OutputVariable>
jest wymagany, gdy zmienna zdefiniowana w elemencie <Source>
jest typu string.
Diagnostyka
Wskaż zasadę JSON na XML, w której wystąpił błąd. Znajdziesz go w elemencie
faultstring
odpowiedzi na błąd. Na przykład w tym elemenciefaultstring
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 określonej w elemencie
<Source>
:- Znajdź w interfejsie API Proxy 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 type (jeśli występuje).
- Jeśli atrybut type jest nieobecny, 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 przypisywania wiadomości jest używana do przypisywania wartości 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>
Zwróć uwagę, że zmienna ustawiona w parametryzu
<AssignVariable>
ma typ ciąg znaków. ZmiennePostalCode
jest więc typu string.Przypomnijmy teraz, że w elemencie
<Source>
zasady JSONToXML używana jest zmiennaPostalCode
:<Source>PostalCode</Source>
Ponieważ element
PostalCode
jest typu ciąg znaków, a element<OutputVariable>
jest nieobecny, otrzymujesz kod błędu:steps.json2xml.OutputVariableIsNotAvailable
Rozdzielczość
Jeśli zmienna określona w elemencie <Source>
w zasadach JSONToXML jest typu string, upewnij się, że element <OutputVariable>
jest zdefiniowany w zasadach.
Aby poprawić zasadę JSONToXML, o której mowa powyżej, dodaj element <OutputVariable>
, jak pokazano 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ład błędu
{
"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. Typ zmiennych zawartych w elemencie <Source>
i elemencie <OutputVariable>
musi być taki sam.
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 tymfaultstring
nazwa zasady toJSONToXML_checktype
:"faultstring": "JSONToXML[JSONToXML_checktype]: String can not be assigned to message type."
W pliku JSON do XML Policy, który nie został przekonwertowany, zwróć uwagę na wartości określone w elementach
<OutputVariable>
i<Source>
.Weź pod uwagę 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ź w interfejsie API Proxy kod, w którym po raz pierwszy zdefiniowano te zmienne.
- Gdy ustalisz zasadę, według której zmienna jest zdefiniowana i wypełniana jako pierwsza, musisz określić jej typ w ten sposób:
- Sprawdź wartość atrybutu type (jeśli występuje).
- 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 popularnych zmiennych i ich typach znajdziesz w artykule Przewodnik po zmiennych.
Na przykład zasada przypisywania wiadomości, która służy do przypisywania wartości zmiennej o nazwie
PostalCode
, wygląda tak:<?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>
Zwróć uwagę, że typem zmiennej ustawiony w elemencie
<AssignVariable>
to ciąg znaków, a dlatego zmiennaPostalCode
ma typ ciąg znaków.Pamiętaj, że zmienna
PostalCode
jest używana w elemencie<Source>
w zasadach JSONToXML:<Source>PostalCode</Source>
Pamiętaj też, że zmienna
response
jest używana w elemencie<OutputVariable>
w zasadach JSONToXML:<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ład błędu
{
"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
Określ nieprawidłowy typ źródła używany w zasadach JSON do XML. Te informacje znajdziesz w komunikacie o błędzie. Na przykład w tym błędzie nieprawidłowy typ to Integer.
"faultstring": "JSONToXML[class java.lang.Integer]: Invalid source type class java.lang.Integer. Valid source types are [message, string]."
Sprawdź wszystkie zasady konwersji z formatu JSON na XML w przypadku konkretnego interfejsu Proxy API, w którym wystąpił błąd. W nieudanej konwersji JSON na XML Policy zapisz nazwę zmiennej określonej w sekcji
<Source>
.Oto przykładowa zasada, która zawiera 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ź w interfejsie API Proxy kod, w którym ta zmienna została zdefiniowana po raz pierwszy.
- 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 type (jeśli występuje).
- 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 popularnych zmiennych i ich typach znajdziesz w artykule Przewodnik po zmiennych.
Dla przykładu załóżmy, że do wyodrębnienia wartości z ładunku JSON używana jest zasada ExtractVariables i ustawia ją na zmienną
EmployeeID
typu liczby całkowitej, 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>
Pamiętaj, że zmienna
EmployeeID
jest używana w elemencie<Source>
w zasadach JSONToXML:<Source>EmployeeID</Source>
Ponieważ typ tej zmiennej to
Integer
, który nie jest prawidłowym typem<Source>
, usługa Proxy API kończy działanie z błędem:steps.json2xml.InvalidSourceType
Rozdzielczość
Sprawdź, czy typ zmiennej używanej do określania elementu <Source>
jest prawidłowy. Prawidłowe typy <Source>
to message
i string
.
Aby uniknąć powyższego błędu w zasadzie JSONToXML, możesz użyć zmiennej żądania, która jest typu komunikat, lub dowolnego innego ciągu znaków, który jest prawidłowym ładunkiem JSON.