Вы просматриваете документацию Apigee Edge .
Перейдите к документации Apigee X. информация
ИсточникНедоступен
Код ошибки
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"
}
}
}
Причина
Эта ошибка возникает, если переменная сообщения , указанная в элементе <Source>
политики JSON to XML, имеет одно из следующих значений:
- Вне области действия (недоступно в конкретном потоке, в котором выполняется политика) или
- Не может быть решено (не определено)
Например, эта ошибка возникает, если политика JSON to XML должна выполняться в потоке запросов, но для элемента <Source>
установлена переменная response
, которой нет в потоке запросов.
Диагностика
Определите политику JSON to XML, в которой произошла ошибка, и имя недоступной переменной. Оба эти элемента можно найти в элементе
faultstring
ответа об ошибке. Например, в следующейfaultstring
имя политики —Convert-JSONToXML
, а переменная —response
:"faultstring": "JSONToXML[Convert-JSONToXML]: Source response is not available"
В неудавшемся XML-файле политики JSON to XML убедитесь, что имя переменной, установленной в элементе
<Source>
, соответствует имени переменной, указанной в строке ошибки (шаг № 1 выше). Например, следующая политика JSON to XML определяет переменную с именемresponse
в элементе<Source>
, которая соответствует значению в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 to XML.Если переменная:
- Вне области действия (недоступно в конкретном потоке, в котором выполняется политика) или
- Не может быть решено (не определено)
тогда это причина ошибки.
В качестве примера предположим, что политика JSON to XML, показанная выше, должна выполняться в потоке запросов . Напомним, что переменная
response
используется в элементе<Source>
политики JSON to XML. Переменная ответа доступна только в потоке ответов.Поскольку переменная
response
не существует в потоке запроса, вы получаете код ошибки:steps.json2xml.SourceUnavailable
Разрешение
Убедитесь, что переменная, установленная в элементе <Source>
неудачной политики JSON to XML, определена и существует в потоке выполнения политики.
Чтобы исправить пример политики JSON to 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>
Выполнение не удалось
Код ошибки
steps.json2xml.ExecutionFailed
Тело ответа об ошибке
{ "fault": { "faultstring": "JSONToXML[policy_name]: Execution failed due to reason: Expecting { or [ at line 1", "detail": { "errorcode": "steps.json2xml.ExecutionFailed" } } }
Возможные причины
Возможные причины этой ошибки:
Причина | Описание |
Отсутствуют входные полезные данные | Входные полезные данные (JSON) пусты. |
Неверный или неверный ввод | Входные данные (JSON), переданные в политику JSON to XML, недействительны или имеют неверный формат. |
Причина: отсутствуют входные полезные данные.
В политике JSON to XML, если содержимое (полезная нагрузка) переменной, указанной в элементе <Source>
, пусто, возникает эта ошибка.
Например, если элемент <Source>
в политике JSON to XML установлен как переменная request
или response
и они должны содержать полезные данные JSON, но если полезные данные пусты, возникает ошибка.
Диагностика
Определите политику JSON to XML, в которой произошла ошибка. Эту информацию можно найти в элементе
faultstring
ответа об ошибке. Например, в следующейfaultstring
имя политики —Convert-JSONToXML
:"faultstring": "JSONToXML[Convert-JSONToXML]: Execution failed due to reason: Expecting { or [ at line 1"
Проверьте элемент
<Source>
в ошибочном XML-файле политики JSON to XML и определите указанную переменную. Например, в следующей политике JSON to 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 to XML, показанном выше, полезные данные запроса (то есть тело запроса), отправленные клиентом, пусты.
Например:
curl -v "http://<org>-<env>.apigee.net/v1/testjsontoxml" -H "Content-Type: application/json"
Поскольку полезные данные ответа JSON пусты, вы получаете код ошибки:
steps.json2xml.ExecutionFailed
Эта ошибка также может возникнуть, если для элемента
<Source>
установлено значение ответа, но внутренний сервер передает пустые полезные данные.
Разрешение
Убедитесь, что входные данные, переданные в политику JSON to 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 to XML анализирует недопустимые или искаженные входные данные, вы получаете эту ошибку.
Например, если в качестве входных данных для политики JSON to XML указан следующий недопустимый JSON:
[
"args": ["name" : "Google" ]
]
вы получите ошибку:
"faultstring": "JSONToXML[Convert-JSONToXML]: Execution failed due to reason: Expecting { or [ at line 1"
Диагностика
Определите политику JSON to XML, в которой произошла ошибка. Эту информацию можно найти в элементе
faultstring
ответа об ошибке. Например, в следующейfaultstring
имя политики —Convert-JSONToXML
:"faultstring": "JSONToXML[Convert-JSONToXML]: Execution failed due to reason: Expecting { or [ at line 1"
Проверьте элемент
<Source>
, указанный в ошибочном XML-коде политики JSON to XML. Например, в следующей политике JSON to 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>
установлено значение ответа, но полезные данные ответа JSON недействительны или имеют неправильный формат.
Разрешение
Убедитесь, что входные данные, переданные в политику JSON to XML в элементе <Source>
, действительны и не имеют искажений.
Чтобы устранить проблему с примером политики JSON to XML, описанной выше, передайте действительный запрос полезных данных JSON следующим образом:
{
"args" : {
"name" : "Google"
}
}
ВыходнаяVariableIsNotAvailable
Код ошибки
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 to XML, имеет строковый тип, а элемент <OutputVariable>
не определен. Элемент <OutputVariable>
является обязательным, если переменная, определенная в элементе <Source>
, имеет строковый тип.
Диагностика
Определите политику JSON to XML, в которой произошла ошибка. Вы можете найти это в элементе
faultstring
ответа об ошибке. Например, в следующейfaultstring
имя политики —Check-JSONToXML
:"faultstring": "JSONToXML[Check-JSONToXML]: Output variable is not available."
В неудавшейся политике JSON to 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 to 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, имеет строковый тип, элемент <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>
Инсовместимыетипы
Код ошибки
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 to 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>
— сообщением или наоборот, это и есть причина ошибки. Вы можете узнать об распространенных переменных и их типах в справочнике по переменным .
В качестве примера рассмотрим политику 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>
Аналогично, напомним, что переменная
response
используется в элементе<OutputVariable>
политики JSONToXML:<OutputVariable>response</OutputVariable>
Поскольку
PostalCode
имеет строковый тип, а переменнаяresponse
имеет тип сообщения, они являются несовместимыми типами, поэтому вы получаете код ошибки:steps.json2xml.InCompatibleTypes
Вышеуказанная ошибка также может возникнуть, если переменная в элементе
<Source>
имеет типmessage
, а переменная в элементе<OutputVariable>
имеет строковый тип.
Разрешение
Убедитесь, что тип переменной, определенной в элементе <Source>
и элементе <OutputVariable>
, всегда один и тот же. Обязательно, чтобы тип переменных, содержащихся в элементе <Source>
и элементе <OutputVariable>
, совпадал. То есть убедитесь, что тип элементов <Source>
и <OutputVariable>
является строковым или типом сообщения.
Чтобы исправить описанную выше политику JSON to XML, вы можете объявить другую переменную PostalCode_output
типа string с помощью политики назначения сообщений и использовать эту переменную в элементе <OutputVariable>
политики JSON to 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>
Инвалидсаурцетип
Код ошибки
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 to 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 to XML запишите имя переменной, указанной в
<Source>
.Ниже приведен пример политики, в которой в элементе
<Source>
указана переменная с именем «EmployeeID»:
<?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, вы можете использовать переменную запроса типа message или любую другую строку, которая является допустимой полезной нагрузкой JSON.