Przeglądasz dokumentację Apigee Edge.
Otwórz dokumentację Apigee X. Informacje
SourceUnavailable
Kod błędu
steps.json2xml.SourceUnavailable
Treść odpowiedzi o błędzie
{ "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 to XML ma jedną z tych wartości:
- Poza zakresem (niedostępne w konkretnym procesie, w którym jest wykonywana zasada) lub
- Nie można rozwiązać (nie określono)
Ten błąd występuje np. wtedy, gdy zasada z kodu 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 to XML, w której wystąpił błąd, oraz nazwę niedostępnej zmiennej. Oba te elementy znajdziesz w elemencie
faultstring
odpowiedzi o błędzie. Na przykład w tagufaultstring
nazwa zasady toConvert-JSONToXML
, a zmienna toresponse
:"faultstring": "JSONToXML[Convert-JSONToXML]: Source response is not available"
W pliku XML zasad JSON-XML, których nie udało się przetworzyć, sprawdź, czy nazwa zestawu zmiennych w elemencie
<Source>
odpowiada nazwie zmiennej określonej 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 odpowiada zawartości wfaultstring
:<?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–XML.Jeśli zmienna to:
- Poza zakresem (niedostępne w konkretnym procesie, w którym jest wykonywana zasada) lub
- Nie można rozwiązać (nie określono)
to jest jego przyczyna.
Załóżmy na przykład, że przedstawiona powyżej zasada JSON–XML powinna zostać zrealizowana w procesie żądania. Pamiętaj, że zmienna
response
jest używana w elemencie<Source>
zasady JSON do XML. Zmienna odpowiedzi jest dostępna tylko w przepływie odpowiedzi.Ponieważ w przepływie żądania nie ma zmiennej
response
, pojawia się kod błędu:steps.json2xml.SourceUnavailable
Rozdzielczość
Sprawdź, czy zmienna ustawiona w elemencie <Source>
w nieudanej zasadzie JSON-XML jest zdefiniowana i istnieje w procesie, w którym jest wykonywana.
Aby poprawić pokazaną powyżej przykładową zasadę JSON na XML, możesz zmodyfikować element <Source>
tak, aby używał zmiennej request
, ponieważ występuje on 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 o błędzie
{ "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 sformułowane dane wejściowe | Dane wejściowe (JSON) przekazane do zasady JSON do XML są nieprawidłowe lub błędnie sformatowane. |
Przyczyna: brak ładunku wejściowego
W zasadzie z kodu JSON na XML, jeśli zawartość (ładunek) zmiennej określonej w elemencie <Source>
jest pusta, występuje ten błąd.
Na przykład jeśli element <Source>
w zasadzie JSON to XML jest ustawiony jako zmienna request
lub response
i powinien zawierać ładunek JSON, ale gdy ładunek jest pusty, występuje błąd.
Diagnostyka
Zidentyfikuj zasadę JSON na XML, w której wystąpił błąd. Te informacje znajdziesz w elemencie
faultstring
odpowiedzi o błędzie. Na przykład w tagufaultstring
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 zasad JSON to XML i określ określoną zmienną. Na przykład w tej zasadzie z kodu JSON na XML element<Source>
ma wartość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 zmienna określona dla elementu
<Source>
w zasadzie jest pusta. Jeśli pole jest puste, to jest przyczyna błędu.W przedstawionej powyżej przykładowej zasadzie JSON na XML ładunek żądania (tj. 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"
Ładunek odpowiedzi JSON jest pusty, dlatego pojawia się kod błędu:
steps.json2xml.ExecutionFailed
Ten błąd może też wystąpić, jeśli element
<Source>
jest ustawiony na odpowiedź, ale serwer backendu przekazuje pusty ładunek.
Rozdzielczość
Upewnij się, że dane wejściowe przekazywane do zasady JSON do XML w elemencie <Source>
są prawidłowym ładunkiem JSON i nie są puste.
Aby rozwiązać problem z przykładową zasadą JSON to 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 za pomocą polecenia cURL w ten 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łędne dane wejściowe
Ten błąd występuje, jeśli zasada JSON to XML analizuje dane wejściowe, które są nieprawidłowe lub źle sformułowane.
Jeśli na przykład w zasadzie JSON do XML podano poniższy nieprawidłowy kod JSON,
[
"args": ["name" : "Google" ]
]
wystąpi błąd:
"faultstring": "JSONToXML[Convert-JSONToXML]: Execution failed due to reason: Expecting { or [ at line 1"
Diagnostyka
Zidentyfikuj zasadę JSON na XML, w której wystąpił błąd. Te informacje znajdziesz w elemencie
faultstring
odpowiedzi o błędzie. Na przykład w tagufaultstring
nazwa zasady toConvert-JSONToXML
:"faultstring": "JSONToXML[Convert-JSONToXML]: Execution failed due to reason: Expecting { or [ at line 1"
Sprawdź element
<Source>
określony w nieudanym pliku XML zasad JSON to XML. Na przykład w tej zasadzie z kodu 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 błędnie sformatowane, to właśnie jest przyczyną błędu.Załóżmy, że do zasady został przekazany poniższy nieprawidłowy kod JSON
[ "args": ["name" : "Google" ] ]
Oto przykładowe wywołanie interfejsu API, które pokazuje sposób przekazania żądania:
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 nawiasami kwadratowymi ([ ]). Z tego powodu otrzymujesz kod błędu:
steps.json2xml.ExecutionFailed
Ten błąd może też wystąpić, jeśli element
<Source>
został ustawiony na odpowiedź, ale ładunek odpowiedzi JSON jest nieprawidłowy lub błędnie sformatowany.
Rozwiązanie
Sprawdź, czy dane wejściowe przekazywane do zasady JSON do XML w elemencie <Source>
są prawidłowe i nie są sformatowane.
Aby rozwiązać problem z przykładową zasadą JSON to XML omówioną powyżej, przekaż prawidłowe żądanie ładunku JSON w następujący sposób:
{
"args" : {
"name" : "Google"
}
}
OutputVariableIsNotAvailable
Kod błędu
steps.json2xml.OutputVariableIsNotAvailable
Treść odpowiedzi o błędzie
{ "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 to XML jest ciągiem znaków, a element <OutputVariable>
nie jest zdefiniowany. Element <OutputVariable>
jest wymagany, gdy zmienna zdefiniowana w elemencie <Source>
jest ciągiem znaków.
Diagnostyka
Wskaż zasadę z formatu JSON na XML, w której wystąpił błąd. Możesz to znaleźć w elemencie
faultstring
odpowiedzi o błędzie. Na przykład w tagufaultstring
nazwa zasady toCheck-JSONToXML
:"faultstring": "JSONToXML[Check-JSONToXML]: Output variable is not available."
W nieudanej zasadzie JSON na XML sprawdź, czy brakuje
<OutputVariable>
.W poniższej 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ślony w elemencie
<Source>
:- Znajdź kod w interfejsie serwera proxy interfejsu API, w którym zmienna została zdefiniowana jako pierwsza.
- Gdy już określisz zasadę, w której zdefiniujesz i uzupełnisz zmienną, musisz najpierw określić jej typ:
- Sprawdź wartość atrybutu typu (jeśli istnieje).
- Jeśli atrybut type nie jest obecny, zmienna jest uznawana za ciąg znaków.
- Jeśli typem zmiennej jest ciąg znaków, to jest przyczyną błędu. Więcej informacji o typowych zmiennych i ich typach znajdziesz w dokumentacji zmiennych.
Spójrz na przykład na zmienną
PostalCode
w powyższej zasadzie JSON do XML.Załóżmy na przykład, że zasada przypisywania wiadomości służy do przypisywania wartości do zmiennej
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 typ zmiennej ustawiony w funkcji
<AssignVariable>
to ciąg znaków. ZmiennaPostalCode
jest więc ciągiem znaków.Pamiętaj, że zmienna
PostalCode
jest używana w elemencie<Source>
zasady JSONToXML:<Source>PostalCode</Source>
PostalCode
jest ciągiem znaków i brakuje elementu<OutputVariable>
, więc pojawia się kod błędu:steps.json2xml.OutputVariableIsNotAvailable
Rozdzielczość
Upewnij się, że jeśli zmienna określona w elemencie <Source>
zasady JSONToXML jest ciągiem znaków, w zasadzie zdefiniowany jest element <OutputVariable>
.
Aby poprawić omówione powyżej zasady JSONToXML, dodaj 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 o błędzie
{ "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, jeśli typ zmiennej zdefiniowanej w elemencie <Source>
i elemencie <OutputVariable>
są różne. Typ zmiennych w elemencie <Source>
i elemencie <OutputVariable>
musi być taki sam.
Prawidłowe typy to message
i string
.
Diagnostyka
Wskaż zasadę z formatu JSON na XML, w której wystąpił błąd. Możesz to znaleźć w elemencie
faultstring
odpowiedzi o błędzie. Na przykład w tagufaultstring
nazwa zasady toJSONToXML_checktype
:"faultstring": "JSONToXML[JSONToXML_checktype]: String can not be assigned to message type."
W nieudanej zasadzie JSON na XML zwróć uwagę na wartości określone w
<OutputVariable>
i<Source>
.Przeanalizuj 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ślony w elementach
<Source>
i<OutputVariable>
:- Znajdź kod w interfejsie API serwera proxy, w którym każda z tych zmiennych została zdefiniowana jako pierwsza.
- Gdy już określisz zasadę, w której zdefiniujesz i uzupełnisz zmienną, musisz najpierw określić jej typ:
- Sprawdź wartość atrybutu typu (jeśli istnieje).
- Jeśli atrybut type nie jest obecny, zmienna jest uznawana za ciąg znaków.
- Jeśli typ zmiennej określony w zasadzie
<Source>
to ciąg znaków, a typ zmiennej<OutputVariable>
to komunikat lub odwrotnie, to jest przyczyną błędu. Więcej informacji o typowych zmiennych i ich typach znajdziesz w dokumentacji zmiennych.
Przyjrzyjmy się przykładowi zasady przypisywania wiadomości, 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 typ zmiennej
<AssignVariable>
jest ciągiem tekstowym, więc zmiennaPostalCode
jest ciągiem znaków.Pamiętaj, że zmienna
PostalCode
jest używana w elemencie<Source>
zasady JSONToXML:<Source>PostalCode</Source>
Pamiętaj, że zmienna
response
jest używana w elemencie<OutputVariable>
zasady JSONToXML:<OutputVariable>response</OutputVariable>
Zmienna
PostalCode
jest ciągiem znaków, a zmiennaresponse
– typem komunikatu, dlatego są to niezgodne typy, dlatego pojawia się kod błędu:steps.json2xml.InCompatibleTypes
Powyższy błąd może też wystąpić, jeśli zmienna w elemencie
<Source>
jest typumessage
, a w elemencie<OutputVariable>
jest ciągiem znaków.
Rozdzielczość
Upewnij się, że typ zmiennej zdefiniowanej w elemencie <Source>
i elemencie <OutputVariable>
jest zawsze taki sam. Typ zmiennych w elemencie <Source>
i elemencie <OutputVariable>
musi być taki sam. Upewnij się więc, że typ <Source>
i elementów <OutputVariable>
są jednocześnie ciągiem tekstowym lub typem komunikatu.
Aby poprawić omówioną powyżej zasadę z formatu JSON na XML, możesz zadeklarować inną zmienną PostalCode_output
ciągu znaków typu przy użyciu zasady przypisywania wiadomości i użyć tej zmiennej w elemencie <OutputVariable>
zasady JSON to XML.
Zmodyfikowane zasady 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 o błędzie
{ "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, jeśli typ zmiennej użytej 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 zasadach z formatu JSON do XML. Informacje te znajdziesz w komunikacie o błędzie. Na przykład w poniższym 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 do XML na określonym serwerze proxy interfejsu API, na którym wystąpił błąd. W nieudanej zasadzie JSON na XML zanotuj nazwę zmiennej określonej w
<Source>
.Oto przykładowa zasada ze zmienną o nazwie PracownikID 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 określony w elemencie
<Source>
:- Znajdź kod w interfejsie proxy API, gdzie najpierw zdefiniowano tę zmienną.
- Gdy już określisz zasadę, w której zdefiniujesz i uzupełnisz zmienną, musisz najpierw określić jej typ:
- Sprawdź wartość atrybutu typu (jeśli istnieje).
- Jeśli atrybut type nie jest obecny, zmienna jest uznawana za ciąg znaków.
- Jeśli typ zmiennej określony w zasadzie
<Source>
nie jest typem komunikatu ani 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 do wyodrębnienia wartości z ładunku JSON służy zasada ExtractVariables, a jej wartość ustawiana jest 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>
zasady JSONToXML:<Source>EmployeeID</Source>
Ponieważ typ tej zmiennej to
Integer
, co nie jest prawidłowym typem<Source>
, 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>
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 komunikatem lub dowolnego innego ciągu, który jest prawidłowym ładunkiem JSON.