Вы просматриваете документацию по Apigee Edge.
Перейдите к документации по Apigee X. Информация
SourceUnavailable
Код ошибки
steps.json2xml.SourceUnavailable
Тело ответа с ошибкой
{ "fault": { "faultstring": "JSONToXML[policy_name]: Source [source_variable] is not available", "detail": { "errorcode": "steps.json2xml.SourceUnavailable" } } }
Пример ошибки
{
"fault": {
"faultstring": "JSONToXML[Convert-JSONToXML]: Source response is not available",
"detail": {
"errorcode": "steps.json2xml.SourceUnavailable"
}
}
}
Причина
Эта ошибка возникает, если переменная message, указанная в элементе <Source> правила JSON в XML, является:
- Не в области действия (недоступно в определенном процессе, в котором выполняется правило) или
- Не удается разрешить (не определено)
Например, эта ошибка возникает, если правило JSON в XML должно выполняться в потоке запроса, но для элемента <Source> задана переменная response, которая не существует в потоке запроса.
диагностика;
Определите правило JSON в XML, в котором произошла ошибка, и название недоступной переменной. Оба этих элемента можно найти в элементе
faultstringответа об ошибке. Например, в следующем тегеfaultstringназвание правила –Convert-JSONToXML, а переменная –response:"faultstring": "JSONToXML[Convert-JSONToXML]: Source response is not available"В XML-файле правил, который не удалось преобразовать из JSON, убедитесь, что название переменной, заданной в элементе
<Source>, совпадает с названием переменной, указанным в строке ошибки (шаг 1 выше). Например, в приведенном ниже правиле преобразования JSON в XML в элементе<Source>задана переменнаяresponse, которая соответствует элементуfaultstring:<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <JSONToXML async="false" continueOnError="false" enabled="true" name="Convert-JSONToXML"> <DisplayName>Convert-JSONToXML</DisplayName> <Properties/> <Options> <NullValue>NULL</NullValue> <NamespaceBlockName>#namespaces</NamespaceBlockName> <DefaultNamespaceNodeName>$default</DefaultNamespaceNodeName> <NamespaceSeparator>:</NamespaceSeparator> <TextNodeName>#text</TextNodeName> <AttributeBlockName>#attrs</AttributeBlockName> <AttributePrefix>@</AttributePrefix> <InvalidCharsReplacement>_</InvalidCharsReplacement> <ObjectRootElementName>Root</ObjectRootElementName> <ArrayRootElementName>Array</ArrayRootElementName> <ArrayItemElementName>Item</ArrayItemElementName> </Options> <OutputVariable>request</OutputVariable> <Source>response</Source> </JSONToXML>Определите, задана ли переменная, используемая в элементе
<Source>, и доступна ли она в потоке, в котором выполняется правило JSON в XML.Если переменная:
- Не в области действия (недоступно в определенном процессе, в котором выполняется правило) или
- Не удается разрешить (не определено)
то это и есть причина ошибки.
Предположим, что приведенное выше правило JSON to XML должно выполняться в потоке запроса. Напоминаем, что переменная
responseиспользуется в элементе<Source>политики JSON в XML. Переменная ответа доступна только в потоке ответов.Поскольку переменная
responseне существует в потоке запросов, вы получите код ошибки:steps.json2xml.SourceUnavailable
Разрешение
Убедитесь, что переменная, заданная в элементе <Source> невыполненного правила JSON в XML, определена и существует в потоке, в котором выполняется правило.
Чтобы исправить приведенный выше пример JSON-правила, можно изменить элемент <Source>, чтобы использовать переменную 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>
ExecutionFailed
Код ошибки
steps.json2xml.ExecutionFailed
Тело ответа с ошибкой
{ "fault": { "faultstring": "JSONToXML[policy_name]: Execution failed due to reason: Expecting { or [ at line 1", "detail": { "errorcode": "steps.json2xml.ExecutionFailed" } } }
Возможные причины
Возможные причины ошибки:
| Cause | Описание |
| Отсутствует входная полезная нагрузка | Входная полезная нагрузка (JSON) пуста. |
| Недопустимый или неправильный ввод | Входные данные (JSON), переданные правилу JSON в XML, недействительны или имеют неправильный формат. |
Причина: отсутствует входная полезная нагрузка
Эта ошибка возникает, если в правиле преобразования JSON в XML контент (полезная нагрузка) переменной, указанной в элементе <Source>, пуст.
Например, если элемент <Source> в правиле преобразования JSON в XML задан как переменная request или response и должен содержать полезную нагрузку JSON, но полезная нагрузка пуста, возникает ошибка.
диагностика;
Определите правило преобразования JSON в XML, в котором произошла ошибка. Эту информацию можно найти в элементе
faultstringответа об ошибке. Например, в следующем фрагменте кодаfaultstringназвание правила –Convert-JSONToXML:"faultstring": "JSONToXML[Convert-JSONToXML]: Execution failed due to reason: Expecting { or [ at line 1"Проверьте элемент
<Source>в XML-файле правил, полученном из JSON, и определите указанную переменную. Например, в следующем правиле преобразования JSON в XML элемент<Source>имеет значение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>Проверьте, не является ли пустой переменная, указанная для элемента
<Source>в правиле. Если он пуст, то это и есть причина ошибки.В приведенном выше примере правила преобразования JSON в XML полезная нагрузка запроса (то есть тело запроса), отправленного клиентом, пуста.
Пример:
curl -v "http://<org>-<env>.apigee.net/v1/testjsontoxml" -H "Content-Type: application/json"Поскольку полезная нагрузка ответа JSON пуста, вы получите код ошибки:
steps.json2xml.ExecutionFailedЭта ошибка также может возникнуть, если для элемента
<Source>задано значение response, но сервер передает пустую полезную нагрузку.
Разрешение
Убедитесь, что входные данные, переданные в правило JSON в XML в элементе <Source>, являются действительной полезной нагрузкой JSON и не пусты.
Чтобы устранить проблему с примером правил JSON-XML, передайте действительную полезную нагрузку JSON. Пример:
Создайте файл с названием
city.jsonсо следующим содержимым:{ "Name":"Apigee", "City":"Bengaluru", "Pincode":"560016" }Выполните вызов API с помощью команды cURL, как показано ниже:
curl -v "http://<org>-<env>.apigee.net/v1/testxmltojson" -H "Content-Type: application/json" -X POST -d @company.json
Причина: недействительный или неправильный входной запрос
Эта ошибка возникает, если правило JSON в XML обрабатывает недопустимый или неправильно отформатированный входной код.
Например, если в качестве входных данных для правила "JSON в XML" указан следующий недопустимый код JSON:
[
"args": ["name" : "Google" ]
]
появится ошибка:
"faultstring": "JSONToXML[Convert-JSONToXML]: Execution failed due to reason: Expecting { or [ at line 1"
диагностика;
Определите правило преобразования JSON в XML, в котором произошла ошибка. Эту информацию можно найти в элементе
faultstringответа об ошибке. Например, в следующем фрагменте кодаfaultstringназвание правила –Convert-JSONToXML:"faultstring": "JSONToXML[Convert-JSONToXML]: Execution failed due to reason: Expecting { or [ at line 1"Проверьте элемент
<Source>, указанный в XML-файле правил преобразования JSON в XML, который не удалось обработать. Например, в следующем правиле преобразования JSON в XML элемент<Source>имеет значение переменной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>Проверьте, является ли входные данные, указанные в элементе
<Source>, допустимой полезной нагрузкой JSON. Если входные данные недействительны или имеют неверный формат, это и будет причиной ошибки.Предположим, что в правило был передан следующий недопустимый код JSON:
[ "args": ["name" : "Google" ] ]Вот пример вызова API, показывающий, как был передан запрос:
curl -v "http://<org>-<env>.apigee.net/v1/testjsontoxml" -H "Content-Type: application/json" -X POST -d '[ "args" : ["name" : "Google" ]]'Полезная нагрузка JSON, переданная в запросе, недействительна, поскольку объект JSON начинается и заканчивается квадратными скобками ([ ]). Из-за этого вы получаете код ошибки:
steps.json2xml.ExecutionFailedЭта ошибка также может возникнуть, если для элемента
<Source>задано значение response, но полезная нагрузка ответа JSON недействительна или имеет неверный формат.
Разрешение
Убедитесь, что входные данные, переданные в элемент <Source> правила преобразования JSON в XML, действительны и не повреждены.
Чтобы исправить проблему с примером правила преобразования JSON в XML, описанным выше, передайте действительный запрос полезной нагрузки JSON следующим образом:
{
"args" : {
"name" : "Google"
}
}
OutputVariableIsNotAvailable
Код ошибки
steps.json2xml.OutputVariableIsNotAvailable
Тело ответа с ошибкой
{ "fault": { "faultstring": "JSONToXML[policy_name]: Output variable is not available.", "detail": { "errorcode": "steps.json2xml.OutputVariableIsNotAvailable" } } }
Пример ошибки
{
"fault": {
"faultstring": "JSONToXML[Check-JSONToXML]: Output variable is not available.",
"detail": {
"errorcode": "steps.json2xml.OutputVariableIsNotAvailable"
}
}
}
Причина
Эта ошибка возникает, если переменная, указанная в элементе <Source> правила JSON в XML, имеет строковый тип, а элемент <OutputVariable> не определен. Элемент <OutputVariable> обязателен, если переменная, определенная в элементе <Source>, имеет тип string (строка).
диагностика;
Определите правило JSON to XML, в котором произошла ошибка. Его можно найти в элементе
faultstringответа об ошибке. Например, в следующем фрагменте кодаfaultstringназвание правила –Check-JSONToXML:"faultstring": "JSONToXML[Check-JSONToXML]: Output variable is not available."В правиле "Не удалось преобразовать JSON в XML" проверьте, не отсутствует ли
<OutputVariable>.В следующем примере правила JSONToXML отсутствует элемент
<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>Определите тип переменной, указанной в элементе
<Source>:- Найдите в прокси API код, в котором переменная была определена впервые.
- Определив, в каких правилах переменная задается и заполняется первой, определите ее тип, выполнив следующие действия:
- Проверьте значение атрибута type (если он есть).
- Если атрибут type отсутствует, переменная считается строкой.
- Если тип переменной – строка, то это и есть причина ошибки. Информацию о распространенных переменных и их типах можно найти в справочнике по переменным.
Например, посмотрите на переменную
PostalCodeв приведенном выше правиле преобразования JSON в XML.Предположим, что правило Assign Message используется для присвоения значения переменной
PostalCode, как показано ниже:<?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>Обратите внимание, что тип переменной, заданный в
<AssignVariable>, – строка. Таким образом, переменнаяPostalCodeимеет строковый тип.Напомним, что переменная
PostalCodeиспользуется в элементе<Source>правила JSONToXML:<Source>PostalCode</Source>Поскольку
PostalCodeимеет строковый тип, а элемент<OutputVariable>отсутствует, вы получите код ошибки:steps.json2xml.OutputVariableIsNotAvailable
Разрешение
Если переменная, указанная в элементе <Source> правила JSONToXML, имеет тип string, убедитесь, что элемент <OutputVariable> определен в правиле.
Чтобы исправить описанное выше правило JSONToXML, добавьте элемент <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>
<OutputVariable>response</OutputVariable>
<Source>PostalCode</Source>
</JSONToXML>
InCompatibleTypes
Код ошибки
steps.json2xml.InCompatibleTypes
Тело ответа с ошибкой
{ "fault": { "faultstring": "JSONToXML[policy_name]: String can not be assigned to message type.", "detail": { "errorcode": "steps.json2xml.InCompatibleTypes" } } }
Пример ошибки
{
"fault": {
"faultstring": "JSONToXML[JSONToXML_checktype]: String can not be assigned to message type.",
"detail": {
"errorcode": "steps.json2xml.InCompatibleTypes"
}
}
}
Причина
Эта ошибка возникает, если тип переменной, определенный в элементе <Source>, не совпадает с типом переменной, определенным в элементе <OutputVariable>. Типы переменных, содержащихся в элементах <Source> и <OutputVariable>, должны совпадать.
Допустимые типы: message и string.
диагностика;
Определите правило JSON to XML, в котором произошла ошибка. Его можно найти в элементе
faultstringответа об ошибке. Например, в следующем фрагменте кодаfaultstringназвание правила –JSONToXML_checktype:"faultstring": "JSONToXML[JSONToXML_checktype]: String can not be assigned to message type."В примечании к правилу "Не удалось преобразовать JSON в XML" запишите значения, указанные в
<OutputVariable>и<Source>.Рассмотрим следующий пример правил:
<?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>Определите тип переменной, указанной в элементах
<Source>и<OutputVariable>:- Найдите в прокси API код, в котором впервые определяются эти переменные.
- Определив, в каких правилах переменная задается и заполняется первой, определите ее тип, выполнив следующие действия:
- Проверьте значение атрибута type (если он есть).
- Если атрибут type отсутствует, переменная считается строкой.
- Если тип переменной, указанной в
<Source>, – строка, а тип<OutputVariable>– сообщение, или наоборот, это и является причиной ошибки. Информацию о распространенных переменных и их типах можно найти в справочнике по переменным.
Например, рассмотрим правило "Назначить сообщение", которое используется для присвоения значения переменной
PostalCode, как показано ниже:<?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>Обратите внимание, что тип переменной, заданный в
<AssignVariable>, – строка, поэтому переменнаяPostalCodeимеет тип "строка".Напомним, что переменная
PostalCodeиспользуется в элементе<Source>правила JSONToXML:<Source>PostalCode</Source>Напоминаем, что переменная
responseиспользуется в элементе<OutputVariable>правила JSONToXML:<OutputVariable>response</OutputVariable>Поскольку
PostalCodeимеет строковый тип, а переменнаяresponse– тип сообщения, они несовместимы, поэтому вы получаете код ошибки:steps.json2xml.InCompatibleTypesЭта ошибка также может возникнуть, если переменная в элементе
<Source>имеет типmessage, а переменная в элементе<OutputVariable>– строковый тип.
Разрешение
Убедитесь, что тип переменной, определенный в элементе <Source>, всегда совпадает с типом переменной, определенным в элементе <OutputVariable>. Типы переменных, содержащихся в элементах <Source> и <OutputVariable>, должны совпадать. Убедитесь, что тип элементов <Source> и <OutputVariable> – строка или сообщение.
Чтобы исправить описанное выше правило JSON в XML, можно объявить другую переменную PostalCode_output типа string, используя правило Assign Message Policy, и использовать эту переменную в элементе <OutputVariable> правила JSON в XML.
Измененные правила назначения сообщений:
<?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>
Измененные правила 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
Код ошибки
steps.json2xml.InvalidSourceType
Тело ответа с ошибкой
{ "fault": { "faultstring": "JSONToXML[class invalid_class]: Invalid source type class invalid_class. Valid source types are [message, string].", "detail": { "errorcode": "steps.json2xml.InvalidSourceType" } } }
Пример ошибки
{
"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"
}
}
}
Причина
Эта ошибка возникает, если тип переменной, используемой для определения элемента <Source>, недопустим.Допустимые типы переменных: message и string.
диагностика;
Определите недопустимый тип источника, используемый в правиле JSON в XML. Эта информация есть в сообщении об ошибке. Например, в приведенной ниже ошибке недопустимый тип – Integer.
"faultstring": "JSONToXML[class java.lang.Integer]: Invalid source type class java.lang.Integer. Valid source types are [message, string]."Проверьте все правила преобразования JSON в XML в определенном прокси API, где произошла ошибка. В правиле "Не удалось преобразовать JSON в XML" запишите название переменной, указанной в
<Source>.Ниже приведен пример правила, в котором переменная EmployeeID указана в элементе
<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>
Определите тип переменной, указанной в элементе
<Source>:- Найдите в прокси API код, в котором эта переменная была определена впервые.
- Определив, в каких правилах переменная задается и заполняется первой, определите ее тип, выполнив следующие действия:
- Проверьте значение атрибута type (если он есть).
- Если атрибут type отсутствует, переменная считается строкой.
- Если тип переменной, указанной в
<Source>, не является ни сообщением, ни строкой, то это и есть причина ошибки. Информацию о распространенных переменных и их типах можно найти в справочнике по переменным.
Предположим, что правило ExtractVariables используется для извлечения значения из полезной нагрузки JSON и присваивает это значение переменной
EmployeeIDцелочисленного типа, как показано ниже:<?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>Напомним, что переменная
EmployeeIDиспользуется в элементе<Source>правила JSONToXML:<Source>EmployeeID</Source>Поскольку тип этой переменной –
Integer, который не является допустимым типом<Source>, прокси API завершается с ошибкой:steps.json2xml.InvalidSourceType
Разрешение
Убедитесь, что тип переменной, используемой для элемента <Source>, действителен. Допустимые типы <Source>: message и string.
Чтобы избежать указанной выше ошибки при использовании правила JSONToXML, можно использовать переменную request, которая имеет тип message, или любую другую строку, представляющую собой действительную полезную нагрузку JSON.