Вы просматриваете документацию Apigee Edge .
Перейдите в документацию Apigee X.info
Источник недоступен
Код ошибки
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 в XML, имеет одно из следующих значений:
- Выход за рамки действия (недоступно в конкретном процессе, в котором выполняется политика) или
- Не может быть решено (не определено)
Например, эта ошибка возникает, если политика преобразования JSON в XML должна выполняться в потоке запроса, но элемент <Source> установлен на переменную response , которой нет в потоке запроса.
Диагноз
Укажите политику преобразования JSON в XML, в которой произошла ошибка, и имя недоступной переменной. Оба эти элемента можно найти в элементе
faultstringответа об ошибке. Например, в следующемfaultstringимя политики —Convert-JSONToXML, а переменная —response:"faultstring": "JSONToXML[Convert-JSONToXML]: Source response is not available"В XML-файле политики преобразования JSON в XML, в котором произошла ошибка, убедитесь, что имя переменной, заданной в элементе
<Source>, совпадает с именем переменной, указанным в строке ошибки (шаг #1 выше). Например, следующая политика преобразования JSON в 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 в XML.Если переменная имеет одно из следующих значений:
- Выход за рамки действия (недоступно в конкретном процессе, в котором выполняется политика) или
- Не может быть решено (не определено)
Тогда в этом и заключается причина ошибки.
В качестве примера предположим, что приведенная выше политика преобразования JSON в XML должна выполняться в потоке запроса . Напомним, что переменная
responseиспользуется в элементе<Source>политики преобразования JSON в XML. Переменная ответа доступна только в потоке ответа.Поскольку переменная
responseотсутствует в потоке запроса, вы получаете код ошибки:steps.json2xml.SourceUnavailable
Разрешение
Убедитесь, что переменная, заданная в элементе <Source> неудачной политики преобразования 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>
Выполнение завершилось с ошибкой.
Код ошибки
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 в 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 в 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 в 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-объект недействителен, поскольку он начинается и заканчивается квадратными скобками ([ ]). По этой причине вы получаете код ошибки:
steps.json2xml.ExecutionFailedЭта ошибка также может возникнуть, если элемент
<Source>был установлен в значение response, но полезная нагрузка JSON-ответа недействительна или имеет неправильный формат.
Разрешение
Убедитесь, что входные данные, передаваемые в политику преобразования JSON в XML в элементе <Source> , являются корректными и не содержат ошибок форматирования.
Чтобы исправить проблему с описанной выше политикой преобразования 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> имеет строковый тип.
Диагноз
Определите политику преобразования JSON в 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-прокси тот момент, когда переменная была определена впервые.
- После того, как вы определите политику, в соответствии с которой переменная определяется и заполняется в первую очередь, вам необходимо определить тип этой переменной следующим образом:
- Проверьте значение атрибута типа (если он присутствует).
- Если атрибут типа отсутствует, то переменная считается строкой.
- Если тип переменной — строка, то это и является причиной ошибки. Подробнее о распространённых переменных и их типах можно узнать в справочнике по переменным .
Например, взгляните на переменную
PostalCodeв приведенной выше политике преобразования JSON в XML.В качестве примера рассмотрим ситуацию, когда политика «Присвоить сообщение» используется для присвоения значения переменной с именем
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имеет тип string.Напомним, что переменная
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 в 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-прокси тот момент, когда каждая из этих переменных была определена впервые.
- После того, как вы определите политику, в соответствии с которой переменная определяется и заполняется в первую очередь, вам необходимо определить тип этой переменной следующим образом:
- Проверьте значение атрибута типа (если он присутствует).
- Если атрибут типа отсутствует, то переменная считается строкой.
- Если тип переменной, указанной в
<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>имеет тип string.
Разрешение
Убедитесь, что тип переменной, определенной в элементе <Source> и элементе <OutputVariable> , всегда совпадает. Обязательно, чтобы тип переменных, содержащихся в элементах <Source> и <OutputVariable> , совпадал. То есть, убедитесь, что тип элементов <Source> и <OutputVariable> — строка или сообщение.
Чтобы исправить описанную выше политику преобразования JSON в XML, вы можете объявить еще одну переменную PostalCode_output string с помощью политики присвоения сообщений и использовать эту переменную в элементе <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-прокси тот момент, когда эта переменная была определена впервые.
- После того, как вы определите политику, в соответствии с которой переменная определяется и заполняется в первую очередь, вам необходимо определить тип этой переменной следующим образом:
- Проверьте значение атрибута типа (если он присутствует).
- Если атрибут типа отсутствует, то переменная считается строкой.
- Если тип переменной, указанной в
<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 Proxy выдает ошибку:steps.json2xml.InvalidSourceType
Разрешение
Убедитесь, что тип переменной, используемой для указания элемента <Source> , является допустимым. Допустимыми типами <Source> являются message и string .
Чтобы избежать указанной выше ошибки, связанной с политикой JSONToXML, вы можете использовать переменную запроса типа message или любую другую строку, являющуюся допустимой полезной нагрузкой JSON.