Поделиться через


Преобразование JSON в XML

ОБЛАСТЬ ПРИМЕНЕНИЯ: все уровни Управление API

Политика json-to-xml преобразует текст запроса или ответа в формате JSON в формат XML.

Примечание.

Задайте элементы политики и дочерние элементы в порядке, указанном в правиле политики. Узнайте, как устанавливать или изменять политики службы управления API.

Правило политики

<json-to-xml 
    apply="always | content-type-json" 
    consider-accept-header="true | false" 
    parse-date="true | false" 
    namespace-separator="separator character"
    namespace-prefix="namespace prefix"
    attribute-block-name="name" />

Атрибуты

Атрибут Описание Обязательное поле По умолчанию.
применить Для атрибута нужно задать одно из следующих значений:

- always — всегда применять преобразование.
- content-type-json — преобразуется только в том случае, если заголовок content-Type ответа указывает на наличие JSON.

Допустимы выражения политики.
Да Н/П
заголовок consider-accept-header Для атрибута нужно задать одно из следующих значений:

- true — примените преобразование, если XML запрашивается в заголовке accept запроса.
- false — всегда применять преобразование.

Допустимы выражения политики.
нет true
синтаксический анализ даты Если задано значение false даты, они просто копируются во время преобразования. Выражения политики не допускаются. нет true
разделитель пространства имен Символ, используемый в качестве разделителя пространства имен. Допустимы выражения политики. нет Подчеркивание
namespace-prefix Строка, определяющая свойство как атрибут пространства имен, обычно "xmlns". Свойства с именами, начиная с указанного префикса, будут добавлены в текущий элемент в качестве объявлений пространства имен. Допустимы выражения политики. нет Н/П
attribute-block-name При установке свойства внутри именованного объекта будут добавлены в элемент в качестве атрибутов. Допустимы выражения политики. нет Не установлено

Использование

  • Разделы политики: входящий трафик, исходящий трафик, при возникновении ошибок
  • Области политики: глобальная, рабочая область, продукт, API, операция
  • Шлюзы: классическая, версия 2, потребление, локальное размещение, рабочая область

Пример

Примите во внимание следующую политику:

<policies>
    <inbound>
        <base />
    </inbound>
    <outbound>
        <base />
        <json-to-xml apply="always" consider-accept-header="false" parse-date="false" namespace-separator=":" namespace-prefix="xmlns" attribute-block-name="#attrs" />
    </outbound>
</policies>

Если серверная часть возвращает следующий код JSON:

{
  "soapenv:Envelope": {
    "xmlns:soapenv": "http://schemas.xmlsoap.org/soap/envelope/",
    "xmlns:v1": "http://localdomain.com/core/v1",
    "soapenv:Header": {},
    "soapenv:Body": {
      "v1:QueryList": {
        "#attrs": {
          "queryName": "test"
        },
        "v1:QueryItem": {
          "name": "dummy text"
        }
      }
    }
  }
}

XML-ответ клиента будет следующим:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:v1="http://localdomain.com/core/v1">
  <soapenv:Header />
  <soapenv:Body>
    <v1:QueryList queryName="test">
      <name>dummy text</name>
    </v1:QueryList>
  </soapenv:Body>
</soapenv:Envelope>

Дополнительные сведения о работе с политиками см. в нижеуказанных статьях.