מוצג המסמך של 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" } } }
גורמים אפשריים
הסיבות האפשריות לשגיאה הזו הן:
| הסיבה | תיאור | 
| חסר עומס נתונים להזנה | המטען הייעודי (payload) של הקלט (JSON) ריק. | 
| קלט לא חוקי או פגום | הקלט (JSON) שהוענק למדיניות של JSON ל-XML לא תקין או שהוא בפורמט שגוי. | 
הסיבה: חסר מטען ייעודי (payload) של קלט
במדיניות מ-JSON ל-XML אם התוכן (המטען הייעודי (Payload) של המשתנה שצוין ברכיב <Source> ריק, השגיאה הזו מתרחשת.
לדוגמה, אם הרכיב <Source> במדיניות JSON ל-XML מוגדר כמשתנה request או response, והוא אמור להכיל מטען ייעודי (payload) של JSON, אבל אם המטען הייעודי (Payload) ריק, השגיאה מתרחשת.
אבחון
- צריך לזהות את המדיניות מ-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 שמוצגת למעלה, המטען הייעודי (payload) של הבקשה (כלומר, גוף הבקשה) שנשלח על ידי הלקוח ריק. - לדוגמה: - curl -v "http://<org>-<env>.apigee.net/v1/testjsontoxml" -H "Content-Type: application/json"- מכיוון שמטען הייעודי (payload) של תגובת ה-JSON ריק, מופיע קוד השגיאה: - steps.json2xml.ExecutionFailed- השגיאה הזו יכולה לקרות גם אם הרכיב - <Source>מוגדר לתגובה, אבל מטען ייעודי (payload) ריק מועבר על ידי שרת הקצה העורפי.
רזולוציה
צריך לוודא שהקלט שמועבר למדיניות JSON ל-XML ברכיב <Source> הוא מטען ייעודי (payload) תקין של JSON ולא ריק.
כדי לפתור את הבעיה במדיניות לדוגמה של המרת JSON ל-XML, צריך להעביר מטען ייעודי (payload) חוקי של 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>הוא מטען ייעודי (payload) חוקי של 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" ]]'- המטען הייעודי (payload) של JSON שהועבר בבקשה לא תקין כי אובייקט ה-JSON מתחיל. ומסתיים בסוגריים מרובעים ([ ]). לכן תקבלו את קוד השגיאה: - steps.json2xml.ExecutionFailed- השגיאה הזו יכולה לקרות גם אם הרכיב - <Source>הוגדר לתגובה, אבל המטען הייעודי (payload) של תגובת ה-JSON לא תקין או שגוי.
רזולוציה
צריך לוודא שהקלט שמועבר למדיניות JSON ל-XML ברכיב <Source> תקין ולא פגום.
כדי לפתור את הבעיה במדיניות לדוגמה של JSON ל-XML שמתוארת למעלה, מעבירים בקשה תקפה של מטען ייעודי (payload) של 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>:- מחפשים את הקוד בשרת ה-proxy ל-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."
- במדיניות של 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>:- מחפשים את הקוד בשרת ה-proxy ל-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 מסוג מחרוזת באמצעות הקצאת מדיניות בנושא הודעות, ולהשתמש במשתנה הזה ברכיב <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 בשרת ה-proxy הספציפי ל-API שבו התרחש הכשל. במדיניות של 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>:- מחפשים את הקוד בשרת ה-proxy ל-API שבו המשתנה הוגדר ראשון.
- אחרי שמבינים קודם את המדיניות שבה המשתנה מוגדר ומאוכלס, צריך לקבוע את סוג המשתנה באופן הבא:
- בודקים את הערך של מאפיין הסוג (אם קיים).
- אם מאפיין הסוג לא קיים, המשתנה נחשב למחרוזת.
 
- אם סוג המשתנה שצוין ב-<Source>הוא לא הודעה או סוג מחרוזת, זו הסיבה לשגיאה. מידע נוסף על משתנים נפוצים והסוגים שלהם זמין בחומר העזר בנושא משתנים.
 - כדוגמה, נביא בחשבון שמדיניות extractVariables משמשת לחילוץ הערך ממטען ייעודי (payload) של 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>חוקי, שרת ה-proxy ל-API נכשל עם השגיאה:- steps.json2xml.InvalidSourceType
רזולוציה
חשוב לוודא שסוג המשתנה שמשמש לציון הרכיב <Source> הוא
  תקין. הסוגים החוקיים של <Source> הם message ו-string.
כדי להימנע מהשגיאה שצוינה למעלה במדיניות JSONToXML, אפשר להשתמש בבקשה שהוא מסוג message או כל מחרוזת אחרת שהיא מטען ייעודי (payload) תקין של JSON.