您正在查看 Apigee Edge 說明文件。
前往
Apigee X說明文件。 資訊
SourceUnavailable
錯誤代碼
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"
}
}
}
原因
如果 JSON 到 XML 政策的 <Source>
元素中指定的 message 變數為下列任一情況,就會發生這項錯誤:
- 範圍外 (不適用於執行政策的特定流程)
- 無法解析 (未定義)
舉例來說,如果 JSON 至 XML 政策應在要求流程中執行,但 <Source>
元素設為 response
變數,則不存在要求流程中,就會發生這個錯誤。
診斷
找出發生錯誤的 JSON 至 XML 政策,以及不適用的變數名稱。您可以在錯誤回應的
faultstring
元素中找到這兩個項目。舉例來說,下列faultstring
中的政策名稱為Convert-JSONToXML
,變數為response
:"faultstring": "JSONToXML[Convert-JSONToXML]: Source response is not available"
在失敗的 JSON 到 XML 政策 XML 中,請確認
<Source>
元素中設定的變數名稱與錯誤字串中識別的變數名稱 (前述步驟 1) 相符。舉例來說,以下 JSON 至 XML 政策會在<Source>
元素中指定名為response
的變數,且此變數與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 政策應在 request 流程中執行。提醒您,
response
變數在 JSON 到 XML 政策的<Source>
元素中使用。回應變數僅適用於回應流程。由於要求流程中沒有
response
變數,因此您會收到錯誤代碼:steps.json2xml.SourceUnavailable
解析度
請確認已定義失敗 JSON 到 XML 政策的 <Source>
元素中設定的變數,並存在於執行政策的流程中。
如要修正上述 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>
ExecutionFailed
錯誤代碼
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) 無效或格式錯誤。 |
原因:缺少輸入酬載
在 JSON 至 XML 政策中,如果 <Source>
元素中指定的變數內容 (酬載) 為空白,就會發生這個錯誤。
舉例來說,如果 JSON 到 XML 政策中的 <Source>
元素設為 request
或 response
變數,且這些變數應包含 JSON 酬載,但酬載為空白,就會發生錯誤。
診斷
找出發生錯誤的 JSON 至 XML 政策。您可以在錯誤回應的
faultstring
元素中找到這項資訊。例如,在以下faultstring
中,政策名稱為Convert-JSONToXML
:"faultstring": "JSONToXML[Convert-JSONToXML]: Execution failed due to reason: Expecting { or [ at line 1"
檢查失敗的 JSON 至 XML 政策 XML 中的
<Source>
元素,並判斷指定的變數。例如,下列 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>
元素設為回應,但後端伺服器傳送了空白酬載,也可能會發生這個錯誤。
解析度
確認傳遞至 <Source>
元素中 JSON 至 XML 政策的輸入內容為有效的 JSON 酬載,且為非空白。
如要解決範例 JSON 至 XML 政策的問題,請傳遞有效的 JSON 酬載。例如:
建立名為
city.json
的檔案,並在當中加入下列內容:{ "Name":"Apigee", "City":"Bengaluru", "Pincode":"560016" }
使用 cURL 指令發出 API 呼叫,如下所示:
curl -v "http://<org>-<env>.apigee.net/v1/testxmltojson" -H "Content-Type: application/json" -X POST -d @company.json
原因:輸入無效或格式錯誤
如果 JSON 到 XML 政策剖析無效或格式不正確的輸入內容,就會發生這個錯誤。
舉例來說,如果提供以下無效的 JSON 做為 JSON 至 XML 政策的輸入項目,
[
"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"
檢查失敗的 JSON 至 XML 政策 XML 中指定的
<Source>
元素。例如,下列 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 物件的開頭和結尾都使用方括號 ([ ]),因此要求中傳遞的 JSON 酬載無效,因此您會收到以下錯誤代碼:
steps.json2xml.ExecutionFailed
如果
<Source>
元素設為回應,但 JSON 回應酬載無效或格式錯誤,也可能會發生這個錯誤。
解析度
請確認在 <Source>
元素中傳遞至 JSON 至 XML 政策的輸入內容是否有效,且沒有格式錯誤。
如要修正上述 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"
}
}
}
原因
如果 JSON 到 XML 政策的 <Source>
元素中指定的變數是類型字串,且未定義 <OutputVariable>
元素,就會發生這個錯誤。如果 <Source>
元素中定義的變數為字串類型,則必須使用 <OutputVariable>
元素。
診斷
找出發生錯誤的 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 Proxy 中找出程式碼。
- 找出先定義及填入變數的政策後,您需要依下列方式判斷該變數的類型:
- 檢查 type 屬性值 (如有)。
- 如果沒有類型屬性,則系統會將變數視為字串。
- 如果變數類型是字串,就會造成錯誤。如要瞭解常見變數和它們的類型,請參閱變數參考資料。
例如,查看上述 JSON 至 XML 政策中的
PostalCode
變數。舉例來說,假設使用「指派訊息」政策將值指派給名為
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
的型別為字串。現在,請回想一下,在 JSONToXML 政策的
<Source>
元素中使用了PostalCode
變數:<Source>PostalCode</Source>
由於
PostalCode
為字串類型,且缺少<OutputVariable>
元素,您會收到錯誤代碼:steps.json2xml.OutputVariableIsNotAvailable
解析度
如果 JSONToXML 政策的 <Source>
元素中指定的變數屬於類型字串,請在政策中定義 <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>
InCompatibleTypes
錯誤代碼
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 Proxy 中找出先定義每個變數的程式碼。
- 找到先定義及填入變數的政策後,您必須依下列方式判斷該變數的類型:
- 檢查 type 屬性值 (如有)。
- 如果沒有 type 屬性,系統會將變數視為字串。
- 如果
<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
屬於類型字串。現在,請回想一下,在 JSONToXML 政策的
<Source>
元素中使用了PostalCode
變數:<Source>PostalCode</Source>
同樣地,請回想一下,在 JSONToXML 政策的
<OutputVariable>
元素中使用response
變數:<OutputVariable>response</OutputVariable>
由於
PostalCode
屬於字串類型,response
變數是訊息類型,因此是不相容的類型,因此您會收到錯誤代碼:steps.json2xml.InCompatibleTypes
如果
<Source>
元素中的變數為message
類型,但<OutputVariable>
元素中的變數為字串類型,也會發生上述錯誤。
解析度
確認 <Source>
元素和 <OutputVariable>
元素中定義的變數類型一律相同。請注意,<Source>
元素和 <OutputVariable>
元素所含的變數類型必須相符。也就是說,請確認 <Source>
和 <OutputVariable>
元素的類型都是字串或訊息類型。
如要修正上述 JSON 到 XML 政策,您可以使用指派訊息政策宣告另一個字串型別的變數 PostalCode_output
,並在 JSON 到 XML 政策的 <OutputVariable>
元素中使用這個變數。
修改過的指派訊息政策:
<?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 政策中使用的無效來源類型。你可以在錯誤訊息中找到這項資訊。舉例來說,下列錯誤中的無效類型為整數。
"faultstring": "JSONToXML[class java.lang.Integer]: Invalid source type class java.lang.Integer. Valid source types are [message, string]."
請檢查發生失敗的特定 API Proxy 中,所有 JSON 到 XML 政策。在失敗的 JSON 到 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 Proxy 中找出程式碼。
- 找到先定義及填入變數的政策後,您必須依下列方式判斷該變數的類型:
- 檢查 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>
現在,請回想一下,在 JSONToXML 政策的
<Source>
元素中使用了EmployeeID
變數:<Source>EmployeeID</Source>
由於這個變數的類型為
Integer
,但這不是有效的<Source>
類型,因此 API Proxy 會失敗並顯示以下錯誤:steps.json2xml.InvalidSourceType
解析度
請確定用於指定 <Source>
元素的變數類型是
有效。有效的 <Source>
類型為 message
和 string
。
為避免上述 JSONToXML 政策發生上述錯誤,您可以使用 變數,也就是訊息類型,或者是有效的 JSON 酬載的任何其他字串。