XMLtoJSON 政策

本頁適用於 ApigeeApigee Hybrid

查看 Apigee Edge 說明文件。

政策圖示

結果

這項政策會將訊息從可延伸標記語言 (XML) 格式轉換為 JavaScript 物件標記法 (JSON),並提供多種選項,讓您控制訊息的轉換方式。

假設意圖是將 XML 格式回應轉換為 JSON 格式回應,則政策會附加至回應流程 (例如 Response / ProxyEndpoint/PostFlow)。

這項政策是標準政策,可部署至任何環境類型。如要瞭解政策類型和各環境類型的可用性,請參閱「政策類型」。

關於

在一般中介服務情境中,針對傳入要求流程的 JSON 至 XML 政策,通常會搭配傳出回應流程的 XML 至 JSON 政策。透過這種方式結合政策,即可為僅原生支援 XML 的後端服務公開 JSON API。

如果 API 是由各種用戶端應用程式使用,且可能需要 JSON 或 XML,則可透過設定 JSON 至 XML 和 XML 至 JSON 政策,以條件方式執行,動態設定回應格式。如要瞭解如何實作此情境,請參閱「流程變數和條件」。


範例

如要進一步瞭解 JSON 與 XML 之間的轉換作業,請參閱這篇文章

轉換回覆

<XMLToJSON name="ConvertToJSON">
  <Options>
  </Options>
  <OutputVariable>response</OutputVariable>
  <Source>response</Source>
</XMLToJSON>

這個設定是將 XML 轉換為 JSON 所需的最低設定,會採用 XML 格式的回應訊息做為來源,然後建立 JSON 格式的訊息,並填入 response OutputVariable。Apigee 會自動使用這個變數的內容,做為下一個處理步驟的訊息。


元素參照

以下是您可以在這項政策中設定的元素和屬性。

<XMLToJSON async="false" continueOnError="false" enabled="true" name="XML-to-JSON-1">
    <DisplayName>XML to JSON 1</DisplayName>
    <Source>response</Source>
    <OutputVariable>response</OutputVariable>
    <Options>
        <RecognizeNumber>true</RecognizeNumber>
        <RecognizeBoolean>true</RecognizeBoolean>
        <RecognizeNull>true</RecognizeNull>
        <NullValue>NULL</NullValue>
        <NamespaceBlockName>#namespaces</NamespaceBlockName>
        <DefaultNamespaceNodeName>&</DefaultNamespaceNodeName>
        <NamespaceSeparator>***</NamespaceSeparator>
        <TextAlwaysAsProperty>true</TextAlwaysAsProperty>
        <TextNodeName>TEXT</TextNodeName>
        <AttributeBlockName>FOO_BLOCK</AttributeBlockName>
        <AttributePrefix>BAR_</AttributePrefix>
        <OutputPrefix>PREFIX_</OutputPrefix>
        <OutputSuffix>_SUFFIX</OutputSuffix>
        <StripLevels>2</StripLevels>
        <TreatAsArray>
            <Path unwrap="true">teachers/teacher/studentnames/name</Path>
        </TreatAsArray>
    </Options>
    <!-- Use Options or Format, not both -->
    <Format>yahoo</Format>
</XMLToJSON>

<XMLtoJSON> 屬性

<XMLtoJSON async="false" continueOnError="false" enabled="true" name="XML-to-JSON-1">

下表說明所有政策父項元素的共同屬性:

屬性 說明 預設 存在必要性
name

政策的內部名稱。name 屬性的值可以包含英文字母、數字、空格、連字號、底線和句號。這個值不得超過 255 個半形字元。

您可以選擇使用 <DisplayName> 元素,在管理 UI 代理程式編輯器中為政策加上不同、自然語言的名稱。

不適用 必填
continueOnError

將其設為 false,即可在政策失敗時傳回錯誤。這是大多數政策的預期行為。

將其設為 true,即使政策失敗,流程執行作業仍會繼續進行。另請參閱:

false 選用
enabled

設為 true 即可強制執行政策。

設為 false 即可關閉政策。即使政策仍附加至流程中,也不會強制執行。

選用
async

此屬性已淘汰。

false 已淘汰

<DisplayName> 元素

除了 name 屬性之外,您也可以在管理 UI 代理程式編輯器中使用不同的自然語言名稱標示政策。

<DisplayName>Policy Display Name</DisplayName>
預設

不適用

如果省略這個元素,系統會使用政策的 name 屬性值。

存在必要性 選用
類型 字串

<Source> 元素

指定要轉換為 JSON 的 XML 訊息。

來源訊息的 HTTP Content-type 標頭必須設為 application/xml,否則系統不會強制執行這項政策。

如果未定義 <Source>,系統會將其視為 message,當政策附加至要求流程時,會解析為 request,當政策附加至回應流程時,則會解析為 response

如果無法解析來源變數,或解析為非訊息類型,政策會擲回錯誤。

<Source>response</Source>
預設 Source 元素的值
存在必要性 選用
類型 訊息

<OutputVariable> 元素

指定 XML 到 JSON 格式轉換作業的輸出內容儲存位置。一般來說,這項元素不會包含在政策設定中。

Apigee 會剖析 Source 中指定的 XML 訊息酬載,將其轉換為 JSON,將結果儲存至 OutputVariable 的酬載,並將 OutputVariable 訊息的 HTTP 內容類型標頭設為 application/json

如果未指定 OutputVariable,系統會預設使用 Source 的值。舉例來說,如果 sourceresponse,則 OutputVariable 預設為 response

<OutputVariable>response</OutputVariable>
預設 Source 中指定的訊息
存在必要性 選用
類型 訊息

<選項>

您可以透過選項控制 XML 到 JSON 的轉換作業。您可以使用 <Options> 群組新增特定轉換設定,也可以使用 <Format> 元素參照預先定義選項的範本。您無法同時使用 <Options><Format>

如果未使用 <Format>,就必須提供 <Options>

<RecognizeNumber> 元素

如果為 true,XML 酬載中的數字欄位會保留原始格式。

<RecognizeNumber>true</RecognizeNumber>

請參考以下 XML 範例:

<a>
  <b>100</b>
  <c>value</c>
</a>

如果 RecognizeNumbertrue,政策會將其轉換為:

{
    "a": {
        "b": 100,
        "c": "value"
    }
}

如果 RecognizeNumberfalse,政策會將其轉換為:

{
  "a": {
    "b": "100",
    "c": "value"
  }
}
預設 false
存在必要性 選用
類型 布林值

<RecognizeBoolean> 元素

讓轉換保留布林值的 true/false 值,而非將值轉換為字串。

<RecognizeBoolean>true</RecognizeBoolean>

以下是 XML 範例:

<a>
  <b>true</b>
  <c>value</c>
</a>

如果 RecognizeBooleantrue,政策會將其轉換為:

{
    "a": {
        "b": true,
        "c": "value"
    }
}

如果 RecognizeBooleanfalse,政策會將其轉換為:

{
    "a": {
        "b": "true",
        "c": "value"
    }
}
預設 false
存在必要性 選用
類型 布林值

<RecognizeNull> 元素

可將空白值轉換為空值。

<RecognizeNull>true</RecognizeNull>

針對下列 XML:

<a>
  <b></b>
  <c>value</c>
</a>

如果 RecognizeNulltrue,且沒有 NullValue 選項,這個 XML 會轉換為:

{
  "a": {
    "b": null,
    "c": "value"
  }
}

如果 RecognizeNullfalse,這個 XML 會轉換為:

{
  "a": {
    "b": {},
    "c": "value"
  }
}
預設 false
存在必要性 選用
類型 布林值

<NullValue> 元素

指示來源訊息中已辨識的空值應轉換為哪個值。預設值為 null。只有在 RecognizeNull 為 true 時,這個選項才會生效。

<NullValue>not-present</NullValue>

針對下列 XML:

<a>
  <b></b>
  <c>value</c>
</a>

如果 RecognizeNulltrue,且未指定 NullValue,則此 XML 會轉換為:

{
  "a": {
    "b": null,
    "c": "value"
  }
}

如果 RecognizeNulltrue,而 NullValuenot-present,則此 XML 會轉換為:

{
  "a": {
    "b": "not-present",
    "c": "value"
  }
}
預設 null
存在必要性 選用
類型 字串

命名空間選項

根據預設,這項政策會在產生的 JSON 中省略 XML 命名空間。如要指定 XML 文件中的命名空間應轉譯為產生的 JSON,請一併使用這些元素。

<NamespaceBlockName>#namespaces</NamespaceBlockName>
<DefaultNamespaceNodeName>&</DefaultNamespaceNodeName>
<NamespaceSeparator>***</NamespaceSeparator>

請參考以下 XML 範例:

<a xmlns="http://ns.com" xmlns:ns1="http://ns1.com">
  <ns1:b>value</ns1:b>
</a>

如果未指定 NamespaceSeparator,系統會產生下列 JSON 結構:

{
    "a": {
        "b": "value"
    }
}

如果元素 NamespaceBlockNameDefaultNamespaceNodeNameNamespaceSeparator 分別指定為 #namespaces&***,系統就會產生下列 JSON 結構:

{
    "a": {
        "#namespaces": {
            "&": "http://ns.com",
            "ns1": "http://ns1.com"
        },
        "ns1***b": "value"
    }
}
預設 無,如果未指定 <NamespaceBlockName>,政策會產生不參照任何 XML 命名空間的輸出 JSON,無論來源訊息是否參照命名空間。
存在必要性 選用
不過,如果您指定 <NamespaceBlockName>,則必須一併指定其他兩個元素。
類型 字串

文字選項

搭配使用這些元素。

      <TextAlwaysAsProperty>true|false</TextAlwaysAsProperty>
      <TextNodeName>TEXT</TextNodeName>

當政策遇到只包含單一文字節點做為子項的 XML 元素時,政策會將該 XML 元素的文字內容轉譯為 JSON 雜湊中的屬性。

當政策遇到包含多個混合內容子項的 XML 元素時,您可以使用這些選項控制任何子文字節點的輸出 JSON。

舉例來說,請考慮下列政策設定:

<XMLToJSON name='XMLToJSON-1'>
  <Options>
    <TextAlwaysAsProperty>???</TextAlwaysAsProperty>
    <TextNodeName>#text</TextNodeName>
  </Options>
</XMLToJSON>

針對指定的 XML 輸入內容,政策會根據 TextAlwaysAsPropertytruefalse 產生以下輸出內容:

XML 輸入 JSON 輸出內容
TextAlwaysAsPropertyfalse TextAlwaysAsPropertytrue
<a>value1</a>
{
  "a": "value1"
}
{
  "a": {
    "#text": "value1"
  }
}
<a>value1
  <b>value2</b>
</a>
{
  "a": {
    "#text": "value1\n",
    "b": "value2"
  }
}
{
  "a": {
    "#text": "value1\n",
    "b": {
      "#text": "value2"
    }
  }
}
預設 <TextAlwaysAsProperty>: false
<TextNodeName>: (空字串)
存在必要性 選用
類型 <TextAlwaysAsProperty>:布林值
<TextNodeName>:字串

屬性選項

這些元素可讓您將屬性值分組成 JSON 區塊,並在屬性名稱中加上前置字串。

<AttributeBlockName>FOO_BLOCK</AttributeBlockName>
<AttributePrefix>BAR_</AttributePrefix>

請參考以下 XML 範例:

<a attrib1="value1" attrib2="value2"/>

如果兩個屬性 (AttributeBlockNameAttributePrefix) 都按照 XML 到 JSON 範例中的定義指定,系統會產生下列 JSON 結構:

{
  "a": {
    "FOO_BLOCK": {
      "BAR_attrib1": "value1",
      "BAR_attrib2": "value2"
    }
  }
}

如果只指定 AttributeBlockName,系統會產生下列 JSON 結構:

{
    "a": {
        "FOO_BLOCK": {
            "attrib1": "value1",
            "attrib2": "value2"
        }
    }
}

如果只指定 AttributePrefix,系統會產生下列 JSON 結構:

{
    "a": {
        "BAR_attrib1": "value1",
        "BAR_attrib2": "value2"
    }
}

如果未指定上述兩者,系統會產生下列 JSON 結構:

{
    "a": {
        "attrib1": "value1",
        "attrib2": "value2"
    }
}
預設 無。
存在必要性 選用
類型 字串

<OutputPrefix> 和 <OutputSuffix> 元素

將這些元素搭配使用,即可為產生的 JSON 套用前置字元和/或後置字元。

<OutputPrefix>PREFIX_</OutputPrefix>
<OutputSuffix>_SUFFIX</OutputSuffix>

請參考以下 XML 範例:

<a>value</a>

假設政策設定如下:

<XMLToJSON name='XMLToJSON-4'>
  <Options>
    <OutputPrefix>{ "result": </OutputPrefix>
    <OutputSuffix>}</OutputSuffix>
  </Options>
</XMLToJSON>

系統會產生下列 JSON 結構:

{
  "result": {
    "a": "value"
  }
}

您可以省略 OutputPrefixOutputSuffix 中的任一或兩者。

使用這些元素可能會產生無效的 JSON。例如使用以下政策設定:

<XMLToJSON name='XMLToJSON-4'>
  <Options>
    <OutputPrefix>PREFIX_</OutputPrefix>
  </Options>
</XMLToJSON>

政策會產生以下內容,但這不是有效的 JSON:

PREFIX_{
  "a" : "value"
}

如果設定未指定 OutputPrefixOutputSuffix,政策會產生下列 JSON 結構:

{
  "a": "value"
}
預設 請參閱上述範例。
存在必要性 選用
類型 字串

<StripLevels> 元素

<Options>
    <StripLevels>4</StripLevels>
</Options>

有時 XML 酬載 (例如 SOAP) 會包含許多您不想納入轉換後 JSON 的父層。以下是包含多個層級的 SOAP 回應範例:

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/Schemata-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <soap:Body>
      <GetCityWeatherByZIPResponse xmlns="http://ws.cdyne.com/WeatherWS/">
          <GetCityWeatherByZIPResult>
              <State>CO</State>
              <City>Denver</City>
              <Description>Sunny</Description>
              <Temperature>62</Temperature>
          </GetCityWeatherByZIPResult>
      </GetCityWeatherByZIPResponse>
  </soap:Body>
</soap:Envelope>

您必須先通過 4 個層級,才能進入「州」、「城市」、「說明」和「溫度」層級。如果不使用 <StripLevels>,轉換後的 JSON 回應會如下所示:

{
   "Envelope" : {
      "Body" : {
         "GetCityWeatherByZIPResponse" : {
            "GetCityWeatherByZIPResult" : {
               "State" : "CO",
               "City" : "Denver",
               "Description" : "Sunny",
               "Temperature" : "62"
            }
         }
      }
   }
}

如果您想在 JSON 回應中移除前 4 個層級,請設定 <StripLevels>4</StripLevels>,這樣您就會收到以下 JSON:

{
  "State" : "CO",
  "City" : "Denver",
  "Description" : "Sunny",
  "Temperature" : "62"
}

您可以刪除多個層級,直到找到包含多個子項的第一個元素為止。代表什麼意思?以下是較複雜的 JSON 範例:

{
   "Envelope" : {
      "Body" : {
         "GetCityForecastByZIPResponse" : {
            "GetCityForecastByZIPResult" : {
               "ResponseText" : "City Found",
               "ForecastResult" : {
                  "Forecast" : [
                     {
                        "ProbabilityOfPrecipiation" : {
                           "Nighttime" : "00",
                           "Daytime" : 10
                        }  ...

本例中的第 3 層是 GetCityForecastByZIPResponse,只有一個子項。因此,如果您要使用 <StripLevels>3</StripLevels> (移除前三個層級),JSON 會如下所示:

{
   "GetCityForecastByZIPResult" : {
      "ResponseText" : "City Found",
      "ForecastResult" : {
         "Forecast" : [
            {
               "ProbabilityOfPrecipiation" : {
                  "Nighttime" : "00",
                  "Daytime" : 10
               }  ...

請注意,GetCityForecastByZIPResult 有多個子項。由於這是包含多個子項的第一個元素,您可以使用 <StripLevels>4</StripLevels> 移除這個最後一層,這樣就會產生下列 JSON:

{
   "ResponseText" : "City Found",
   "ForecastResult" : {
      "Forecast" : [
         {
            "ProbabilityOfPrecipiation" : {
               "Nighttime" : "00",
               "Daytime" : 10
            }  ...

由於第 4 層是第一個包含多個子項的層級,因此您無法移除低於此層級的任何層級。如果您將條紋層級設為 5、6、7 等,將會繼續收到上述回應。

預設 0 (不去除層級)
存在必要性 選用
類型 整數

<TreatAsArray>/<Path> 元素

<Options>
    <TreatAsArray>
        <Path unwrap="true">teachers/teacher/studentnames/name</Path>
    </TreatAsArray>
</Options>

這個元素組合可確保 XML 文件中的值一律會轉譯為 JSON 陣列。當不同酬載的子元素數量不同時,這項功能就很實用。Apigee 的預設行為是將同名子元素轉換為 JSON 陣列,並將單一子元素轉換為 JSON 基本元素。TreatAsArray 選項可確保子元素一律會轉譯為 JSON 陣列。

使用 TreatAsArray 可改善後續處理輸出的程式碼結構,因為陣列的資料每次都會以相同方式傳回。舉例來說,無論原始 XML 是否包含一個或多個 name 元素,評估 $.teachers.teacher.studentnames.name[0] 的 JSONPath 都會一律傳回名字值。

讓我們先回顧 XML 到 JSON 的預設行為,然後瞭解如何使用 <TreatAsArray>/<Path> 控制輸出內容。

如果 XML 文件包含多次出現的元素 (當 XML 結構定義為元素的 maxOccurs='unbounded' 時,就可能發生這種情況),XML 轉 JSON 政策會自動將這些值放入陣列。例如,以下 XML 區塊

<teacher>
    <name>teacherA</name>
    <studentnames>
        <name>student1</name>
        <name>student2</name>
    </studentnames>
</teacher>

...會自動轉換為下列 JSON,且沒有任何特殊政策設定:

{
  "teachers" : {
    "teacher" : {
      "name" : "teacherA",
      "studentnames" : {
        "name" : [
          "student1",
          "student2"
        ]
      }
    }
  }
}

請注意,兩個學生名稱都包含在陣列中。

不過,如果 XML 文件中只顯示一個學生,XML 到 JSON 政策會自動將該值視為單一字串,而非字串陣列,如以下範例所示:

{
  "teachers" : {
    "teacher" : {
      "name" : "teacherA",
      "studentnames" : {
        "name" : "student1"
      }
    }
  }
}

在前述範例中,系統會以不同的方式轉換類似的資料,一次轉換為陣列,另一次轉換為單一字串。<TreatAsArray>/<Path> 元素可讓您控制輸出內容,確保學生名稱一律會轉換為陣列,即使只有一個值也不例外。如要設定這項功能,請找出要將值轉換為陣列的元素路徑,例如:

<Options>
    <TreatAsArray>
        <Path>teachers/teacher/studentnames/name</Path>
    </TreatAsArray>
</Options>

上述設定會產生類似以下的 JSON:

{
  "teachers" : {
    "teacher" : {
      "name" : "teacherA",
      "studentnames" : {
        "name" : ["student1"]
      }
    }
  }
}

請注意,student1 現已位於陣列中。無論學生人數為單一或多個,您現在都可以使用下列 JSONPath,從程式碼中的 JSON 陣列中擷取學生資料:$.teachers.teacher.studentnames.name[0]

<Path> 元素也包含 unwrap 屬性,詳情請見下一節。

預設 不適用
存在必要性 選用
類型 字串

屬性

 <Options>
    <TreatAsArray>
        <Path unwrap="true">teachers/teacher/studentnames/name</Path>
    </TreatAsArray>
</Options>
屬性 說明 存在必要性 類型
unwrap

預設值:false

從 JSON 輸出內容中移除元素。您可以使用這項功能簡化或扁平化 (「展開」) JSON,藉此縮短擷取值所需的 JSONPath。舉例來說,您可以將 JSON 展開,並使用 $.teachers.studentnames[*],而非 $.teachers.teacher.studentnames.name[*]

以下是 JSON 範例:

{
  "teachers" : {
      "teacher" : {
          "name" : "teacherA",
          "studentnames" : {
              "name" : [
                 "student1",
                 "student2"
              ]}...

在這個範例中,您可以說 teacher 元素和學生名稱 name 元素並非必要。因此您可以移除或解開包裝。以下是設定 <Path> 元素的做法:

<TreatAsArray>
    <Path unwrap="true">teachers/teacher</Path>
    <Path unwrap="true">teachers/teacher/studentnames/name</Path>
</TreatAsArray>

unwrap 屬性設為 true,並提供要展開的元素路徑。JSON 輸出內容現在會如下所示:

{
  "teachers" : [{
      "name" : "teacherA",
      "studentnames" : ["student1","student2"]
      }]...

請注意,由於 <Path> 元素位於 <TreatAsArray> 元素中,因此路徑中的兩個元素都會在 JSON 輸出中視為陣列。

選用 布林值

如需更多範例和功能操作說明,請參閱 這篇 Google Cloud 社群文章

<Format>

格式可讓您控制 XML 到 JSON 的轉換作業。輸入預先定義範本的名稱,該範本包含本主題所述的選項元素特定組合。預先定義的格式包括:xml.comyahoogooglebadgerFish

使用 <Format> 元素或 <Options> 群組。您無法同時使用 <Format><Options>

以下是每個預先定義範本的格式定義。

xml.com

<RecognizeNull>true</RecognizeNull>
<TextNodeName>#text</TextNodeName>
<AttributePrefix>@</AttributePrefix>

yahoo

<RecognizeNumber>true</RecognizeNumber>
<TextNodeName>content</TextNodeName>

google

<TextNodeName>$t</TextNodeName>
<NamespaceSeparator>$</NamespaceSeparator>
<TextAlwaysAsProperty>true</TextAlwaysAsProperty>

badgerFish

<TextNodeName>$</TextNodeName>
<TextAlwaysAsProperty>true</TextAlwaysAsProperty>
<AttributePrefix>@</AttributePrefix>
<NamespaceSeparator>:</NamespaceSeparator>
<NamespaceBlockName>@xmlns</NamespaceBlockName>
<DefaultNamespaceNodeName>$</DefaultNamespaceNodeName>

元素語法:

<Format>yahoo</Format>
預設 (無)
有效值 下列任一項目:
xml.comyahoogooglebadgerFish
存在必要性 選用,但如果未使用 <Options>,則為必填。
類型 字串

結構定義


錯誤參考資料

本節說明這項政策觸發錯誤時,Apigee 傳回的錯誤代碼和錯誤訊息,以及 Apigee 設定的錯誤變數。如果您要開發錯誤處理規則,就必須瞭解這項資訊。如需更多資訊,請參閱「關於政策錯誤的相關資訊」和「處理錯誤」。

執行階段錯誤

政策執行時可能會發生這些錯誤。

錯誤代碼 HTTP 狀態 原因 修正
steps.xmltojson.ExecutionFailed ExecutionFailed 當輸入酬載 (XML) 為空白,或輸入 XML 無效或格式錯誤時,就會發生這項錯誤。
steps.xmltojson.InCompatibleTypes ExecutionFailed 如果 <Source> 元素和 <OutputVariable> 元素中定義的變數類型不一致,就會發生此錯誤。<Source> 元素和 <OutputVariable> 元素中包含的變數類型必須一致。
steps.xmltojson.InvalidSourceType ExecutionFailed 如果用來定義 <Source> 元素的變數類型無效,就會發生這項錯誤。有效的變數類型為訊息和字串。
steps.xmltojson.OutputVariableIsNotAvailable ExecutionFailed 如果 XML 到 JSON 政策的 <Source> 元素中指定的變數為字串類型,且未定義 <OutputVariable> 元素,就會發生這個錯誤。如果 <Source> 元素中定義的變數為字串類型,則必須使用 <OutputVariable> 元素。
steps.xmltojson.SourceUnavailable ExecutionFailed 如果 XML 到 JSON 政策的 <Source> 元素中指定的 message 變數為下列任一情況,就會發生此錯誤:
  • 超出範圍 (無法在執行政策的特定流程中使用),或
  • 無法解析 (未定義)

部署錯誤

部署含有這項政策的 Proxy 時,可能會發生這些錯誤。

錯誤名稱 原因 修正
EitherOptionOrFormat 如果 XML 到 JSON 政策中未宣告其中一個 <Options><Format> 元素,則 API Proxy 的部署作業會失敗。
UnknownFormat 如果 XML 到 JSON 政策中的 <Format> 元素定義了不明格式,API 代理程式就會無法部署。預先定義的格式包括:xml.comyahoogooglebadgerFish

錯誤變數

這些變數會在發生執行階段錯誤時設定。詳情請參閱「關於政策錯誤的相關資訊」。

變數 地點 範例
fault.name="fault_name" fault_name 是錯誤名稱,如上方「執行階段錯誤」表格所列。錯誤名稱是錯誤代碼的最後一個部分。 fault.name = "SourceUnavailable"
xmltojson.policy_name.failed policy_name 是擲回錯誤的政策的使用者指定名稱。 xmltojson.XMLtoJSON-1.failed = true

錯誤回應範例

{
  "fault": {
    "faultstring": "XMLToJSON[XMLtoJSON-1]: Source xyz is not available",
    "detail": {
      "errorcode": "steps.xml2json.SourceUnavailable"
    }
  }
}

錯誤規則範例

<faultrule name="VariableOfNonMsgType"></faultrule><FaultRule name="XML to JSON Faults">
    <Step>
        <Name>AM-SourceUnavailableMessage</Name>
        <Condition>(fault.name Matches "SourceUnavailable") </Condition>
    </Step>
    <Step>
        <Name>AM-BadXML</Name>
        <Condition>(fault.name = "ExecutionFailed")</Condition>
    </Step>
    <Condition>(xmltojson.XMLtoJSON-1.failed = true) </Condition>
</FaultRule>

相關主題

JSON 轉換為 XML:JSONtoXML 政策