將 JSON 轉換成 XML

適用於:所有 API 管理 層

json-to-xml 原則將要求或回應本文從 JSON 轉換成 XML。

注意

請依照原則陳述式中提供的順序,來設定原則的元素和子元素。 深入了解如何設定或編輯 APIM 原則

原則陳述式

<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 存在時才轉換。

允許使用原則運算式。
Yes N/A
consider-accept-header 此屬性必須設為下列其中一個值。

- true – 如果在要求的 Accept 標頭中要求 XML,才套用轉換。
- false – 一律套用轉換。

允許使用原則運算式。
No true
剖析日期 設定為 false 時,只會在轉換期間複製日期值。 不允許使用原則運算式。 No true
namespace-separator 作為命名空間分隔符號的字元。 允許使用原則運算式。 No 底線
namespace-prefix 將屬性識別為命名空間屬性的字串,通常是「xmlns」。 以指定前置詞開頭的名稱屬性將會新增至目前元素,作為命名空間宣告。 允許使用原則運算式。 No N/A
attribute-block-name 設定後,具名物件內的屬性會新增為元素的屬性。 允許使用原則運算式。 No 未設定

使用方式

範例

請考慮使用以下原則:

<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>

如需使用原則的詳細資訊,請參閱: