أنت تطّلع على مستندات 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 التي حدث فيها الخطأ واسم المتغيّر غير المتاح. يمكنك العثور على كلا العنصرَين في عنصر
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 الخاص بسياسة XML الذي تعذّر دمجه بتنسيق JSON إلى XML وحدِّد المتغيّر المحدّد. على سبيل المثال، تم ضبط العنصر<Source>
علىrequest
في السياسة التالية من JSON إلى XML:<?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" }
يمكنك طلب بيانات من واجهة برمجة التطبيقات باستخدام أمر 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 الذي تعذّر تحويله. على سبيل المثال، تم ضبط العنصر<Source>
على المتغيّرrequest
في السياسة التالية من JSON إلى XML:<?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" ] ]
في ما يلي نموذج لطلب بيانات من واجهة برمجة التطبيقات يوضِّح كيفية تمرير الطلب:
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>
على response ولكنّ الحمولة في استجابة 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 من النوع string ولم يتم تعريف عنصر <OutputVariable>
. يكون العنصر <OutputVariable>
إلزاميًا عندما يكون المتغيّر المحدّد في العنصر <Source>
من النوع سلسلة.
التشخيص
حدِّد سياسة JSON إلى XML التي حدث فيها الخطأ. يمكنك العثور على هذا النص في العنصر
faultstring
الخاص باستجابة الخطأ. على سبيل المثال، في سياسةfaultstring
التالية، يكون اسم السياسة هوCheck-JSONToXML
:"faultstring": "JSONToXML[Check-JSONToXML]: Output variable is not available."
في سياسة JSON إلى XML التي تعذّر تنفيذها، تحقَّق من عدم توفّر سمة
<OutputVariable>
.لم يتم تضمين عنصر
<OutputVariable>
في نموذج سياسة JSONToXML التالي:<?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>
:- حدِّد مكان الرمز ضمن "وكيل واجهة برمجة التطبيقات" الذي تمّ فيه تعريف المتغيّر أولاً.
- بمجرد معرفة السياسة التي يتم فيها تعريف المتغير وتعبئته أولاً، تحتاج إلى تحديد نوع هذا المتغير على النحو التالي:
- تحقّق من قيمة سمة type (إذا كانت متوفّرة).
- إذا لم تكن سمة type موجودة، يُعتبر المتغير سلسلة.
- إذا كان نوع المتغير هو سلسلة، فهذا هو سبب الخطأ. يمكنك التعرّف على المتغيّرات الشائعة وأنواعها في مرجع المتغيّرات.
على سبيل المثال، يمكنك الاطّلاع على المتغيّر
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."
في سياسة 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>
:- حدِّد مكان الرمز في "وكيل واجهة برمجة التطبيقات" حيث تم تعريف كل متغيّر من هذه المتغيّرات أولاً.
- بمجرد معرفة السياسة التي يتم فيها تعريف المتغير وتعبئته أولاً، تحتاج إلى تحديد نوع هذا المتغير على النحو التالي:
- تحقّق من قيمة سمة 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
من نوع السلسلة.يُرجى العِلم أنّه يتم الآن استخدام المتغيّر
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
من النوع string باستخدام سياسة تحديد الرسالة، واستخدام هذا المتغيّر في عنصر <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. يمكنك العثور على هذه المعلومات في رسالة الخطأ. على سبيل المثال، في الخطأ التالي، النوع غير الصالح هو عدد صحيح.
"faultstring": "JSONToXML[class java.lang.Integer]: Invalid source type class java.lang.Integer. Valid source types are [message, string]."
راجِع جميع سياسات تحويل JSON إلى XML في وكيل واجهة برمجة التطبيقات المحدّد الذي حدث فيه الخطأ. في سياسة JSON إلى XML التي تعذّرت معالجتها، سجِّل اسم المتغيّر المحدّد في
<Source>
.في ما يلي نموذج سياسة يتضمّن المتغيّر 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>
:- حدِّد مكان الرمز في "وكيل واجهة برمجة التطبيقات" الذي تمّ فيه تعريف هذا المتغيّر أولاً.
- بمجرد معرفة السياسة التي يتم فيها تعريف المتغير وتعبئته أولاً، تحتاج إلى تحديد نوع هذا المتغير على النحو التالي:
- تحقّق من قيمة سمة type (إذا كانت متوفّرة).
- إذا لم تكن سمة type موجودة، يُعتبر المتغير سلسلة.
- إذا لم يكن نوع المتغيّر المحدَّد في
<Source>
ليس نوع رسالة أو سلسلة، يكون هذا هو سبب الخطأ. يمكنك التعرّف على المتغيّرات الشائعة وأنواعها في مرجع المتغيّرات.
على سبيل المثال، لنأخذ في الاعتبار أنّ سياسة استخراج المتغيّرات المستخدَمة لاستخراج القيمة من حمولة 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>
، يتعذّر تنفيذ الخادم الوكيل لواجهة برمجة التطبيقات مع ظهور الخطأ:steps.json2xml.InvalidSourceType
الدقة
تأكَّد من أنّ نوع المتغيّر المستخدَم لتحديد عنصر <Source>
هو
صالحة. نوعا <Source>
الصالحان هما message
وstring
.
لتجنّب حدوث الخطأ أعلاه في سياسة JSONToXML، يمكنك استخدام الطلب متغيّر من النوع message أو أي سلسلة أخرى وهو حمولة JSON صالحة