คุณกำลังดูเอกสารประกอบ 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"
}
}
}
สาเหตุ
ข้อผิดพลาดนี้เกิดขึ้นหากตัวแปร message ที่ระบุในองค์ประกอบ <Source>
ของนโยบาย JSON เป็น XML มีลักษณะอย่างใดอย่างหนึ่งต่อไปนี้
- อยู่นอกขอบเขต (ใช้ไม่ได้ในขั้นตอนที่เจาะจงซึ่งจะมีการบังคับใช้นโยบาย) หรือ
- แก้ไขไม่ได้ (ไม่ได้กำหนด)
ตัวอย่างเช่น ข้อผิดพลาดนี้เกิดขึ้นหากระบบควรจะดำเนินการกับนโยบาย JSON เป็น XML ในขั้นตอนคำขอ แต่องค์ประกอบ <Source>
ได้รับการตั้งค่าเป็นตัวแปร response
ซึ่งไม่มีอยู่ในขั้นตอนคำขอ
การวินิจฉัย
ระบุนโยบาย JSON เป็น XML ที่ทำให้เกิดข้อผิดพลาดและชื่อตัวแปรที่ไม่พร้อมใช้งาน คุณจะเห็นทั้ง 2 รายการนี้ในองค์ประกอบ
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>
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 ไปยัง 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>
ให้ตอบสนอง แต่เซิร์ฟเวอร์แบ็กเอนด์ส่งเพย์โหลดที่ว่างเปล่า
ความละเอียด
ตรวจสอบว่าอินพุตที่ส่งไปยังนโยบาย 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 ที่ไม่ถูกต้องต่อไปนี้เป็นอินพุตของ 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"
ตรวจสอบองค์ประกอบ
<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 ที่ส่งในคำขอไม่ถูกต้องเนื่องจากออบเจ็กต์ JSON เริ่มทำงาน และลงท้ายด้วยวงเล็บเหลี่ยม ([ ]) ด้วยเหตุนี้ คุณจึงได้รับรหัสข้อผิดพลาด:
steps.json2xml.ExecutionFailed
ข้อผิดพลาดนี้ยังอาจเกิดขึ้นได้หากมีการตั้งค่าองค์ประกอบ
<Source>
ให้ตอบสนอง แต่เพย์โหลดการตอบกลับ 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
จึงเป็นประเภทสตริงตอนนี้ให้จำได้ว่ามีการใช้ตัวแปร
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>
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."
บันทึกค่าที่ระบุใน
<OutputVariable>
และ<Source>
ในนโยบาย JSON เป็น XML ที่ล้มเหลวลองดูนโยบายตัวอย่างต่อไปนี้
<?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>
เป็นสตริงประเภท
ความละเอียด
ตรวจสอบว่าประเภทของตัวแปรที่กําหนดไว้ในองค์ประกอบ <Source>
และองค์ประกอบ <OutputVariable>
เหมือนกันเสมอ ประเภทของตัวแปรที่อยู่ในองค์ประกอบ <Source>
และองค์ประกอบ <OutputVariable>
ต้องตรงกัน กล่าวคือ ตรวจสอบว่าประเภทขององค์ประกอบ <Source>
และ <OutputVariable>
เป็นทั้งสตริงหรือข้อความประเภท
หากต้องการแก้ไขนโยบาย JSON เป็น XML ที่กล่าวถึงข้างต้น คุณสามารถประกาศตัวแปร PostalCode_output
ของสตริงประเภทโดยใช้นโยบาย Assign Message Policy และใช้ตัวแปรนี้ในองค์ประกอบ <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 เฉพาะที่เกิดความล้มเหลวขึ้น จดบันทึกชื่อของตัวแปรที่ระบุใน
<Source>
ในนโยบาย JSON เป็น XML ที่ล้มเหลวต่อไปนี้คือตัวอย่างนโยบายที่มีตัวแปรชื่อ 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 จึงทำงานล้มเหลวโดยมีข้อผิดพลาดดังนี้steps.json2xml.InvalidSourceType
ความละเอียด
ตรวจสอบว่าประเภทของตัวแปรที่ใช้ระบุองค์ประกอบ <Source>
คือ
ใช้ได้ ประเภท <Source>
ที่ถูกต้องคือ message
และ string
เพื่อหลีกเลี่ยงข้อผิดพลาดข้างต้นที่เกิดขึ้นกับนโยบาย JSONToXML คุณสามารถใช้คำขอ ซึ่งเป็นประเภทข้อความหรือสตริงอื่นๆ ซึ่งเป็นเพย์โหลด JSON ที่ถูกต้อง