JSON থেকে XML নীতি রানটাইম ত্রুটি সমস্যা সমাধান

আপনি Apigee Edge ডকুমেন্টেশন দেখছেন।
Apigee X ডকুমেন্টেশনে যান
তথ্য

উৎস অনুপলব্ধ

ত্রুটি কোড

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> উপাদানে নির্দিষ্ট করা বার্তা পরিবর্তনশীল হয়:

  • সুযোগের বাইরে (নির্দিষ্ট প্রবাহে উপলব্ধ নয় যেখানে নীতিটি কার্যকর করা হচ্ছে) বা
  • সমাধান করা যাবে না (সংজ্ঞায়িত করা হয় না)

উদাহরণস্বরূপ, এই ত্রুটিটি ঘটে যদি JSON থেকে XML নীতিটি অনুরোধের প্রবাহে কার্যকর করা হয়, কিন্তু <Source> উপাদানটি response ভেরিয়েবলে সেট করা হয়, যা অনুরোধের প্রবাহে বিদ্যমান নেই।

রোগ নির্ণয়

  1. JSON থেকে XML নীতি সনাক্ত করুন যেখানে ত্রুটি ঘটেছে এবং ভেরিয়েবলের নাম যা উপলব্ধ নয়৷ আপনি ত্রুটি প্রতিক্রিয়ার faultstring উপাদানে এই দুটি আইটেম খুঁজে পেতে পারেন। উদাহরণস্বরূপ, নিম্নলিখিত faultstring -এ, নীতির নাম হল Convert-JSONToXML এবং ভেরিয়েবল হল response :

    "faultstring": "JSONToXML[Convert-JSONToXML]: Source response is not available"
    
  2. ব্যর্থ 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>
    
  3. <Source> উপাদানে ব্যবহৃত ভেরিয়েবলটি সংজ্ঞায়িত করা হয়েছে এবং যে প্রবাহে JSON থেকে XML নীতি কার্যকর করা হচ্ছে সেখানে উপলব্ধ কিনা তা নির্ধারণ করুন।

  4. যদি পরিবর্তনশীল হয়:

    • সুযোগের বাইরে (নির্দিষ্ট প্রবাহে উপলব্ধ নয় যেখানে নীতিটি কার্যকর করা হচ্ছে) বা
    • সমাধান করা যাবে না (সংজ্ঞায়িত করা হয় না)

    তাহলে এটি ত্রুটির কারণ।

    একটি উদাহরণ হিসাবে, ধরা যাক উপরে দেখানো JSON থেকে XML নীতি অনুরোধের প্রবাহে কার্যকর হওয়ার কথা। মনে রাখবেন যে response ভেরিয়েবলটি JSON থেকে XML নীতির <Source> উপাদানে ব্যবহৃত হয়। প্রতিক্রিয়া পরিবর্তনশীল শুধুমাত্র প্রতিক্রিয়া প্রবাহে উপলব্ধ।

    যেহেতু response ভেরিয়েবল অনুরোধের প্রবাহে বিদ্যমান নেই, আপনি ত্রুটি কোডটি পাবেন:

    steps.json2xml.SourceUnavailable
    

রেজোলিউশন

নিশ্চিত করুন যে ব্যর্থ JSON থেকে XML নীতির <Source> উপাদানে সেট করা ভেরিয়েবলটি সংজ্ঞায়িত করা হয়েছে এবং নীতিটি কার্যকর করার প্রবাহে বিদ্যমান রয়েছে।

উপরে দেখানো উদাহরণ JSON থেকে XML নীতি সংশোধন করতে, আপনি request ভেরিয়েবল ব্যবহার করার জন্য <Source> উপাদানটি সংশোধন করতে পারেন, কারণ এটি অনুরোধের প্রবাহে বিদ্যমান:

  <?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>

কার্যকর করা ব্যর্থ হয়েছে৷

ত্রুটি কোড

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 থেকে XML নীতিতে পাঠানো ইনপুট (JSON) অবৈধ বা বিকৃত।

কারণ: ইনপুট পেলোড অনুপস্থিত

JSON থেকে XML নীতিতে যদি <Source> উপাদানে নির্দিষ্ট করা ভেরিয়েবলের বিষয়বস্তু (পেলোড) খালি থাকে, তাহলে এই ত্রুটিটি ঘটে।

উদাহরণস্বরূপ, যদি JSON থেকে XML নীতিতে <Source> উপাদানটি একটি request বা response ভেরিয়েবল হিসাবে সেট করা হয় এবং সেগুলিতে একটি JSON পেলোড থাকে বলে মনে করা হয়, কিন্তু যদি পেলোড খালি থাকে, তাহলে ত্রুটি ঘটে।

রোগ নির্ণয়

  1. JSON থেকে XML নীতি সনাক্ত করুন যেখানে ত্রুটি ঘটেছে। আপনি ত্রুটি প্রতিক্রিয়ার faultstring উপাদানটিতে এই তথ্যটি খুঁজে পেতে পারেন। উদাহরণস্বরূপ, নিম্নলিখিত faultstring -এ, নীতির নাম হল Convert-JSONToXML :

    "faultstring": "JSONToXML[Convert-JSONToXML]: Execution failed due to reason: Expecting { or [ at line 1"
    
  2. ব্যর্থ JSON থেকে XML নীতি XML-এ <Source> উপাদান পরীক্ষা করুন এবং নির্দিষ্ট পরিবর্তনশীল নির্ধারণ করুন। উদাহরণস্বরূপ, নিম্নলিখিত JSON থেকে XML নীতিতে request জন্য <Source> উপাদান সেট করা আছে:

    <?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>
    
  3. নীতিতে <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 পেলোড পাস করুন। যেমন:

  1. নিম্নলিখিত বিষয়বস্তু সহ city.json নামে একটি ফাইল তৈরি করুন:

    {
      "Name":"Apigee",
      "City":"Bengaluru",
      "Pincode":"560016"
    }
    
  2. নিম্নরূপ একটি cURL কমান্ড ব্যবহার করে API কল করুন:

    curl -v "http://<org>-<env>.apigee.net/v1/testxmltojson" -H "Content-Type: application/json" -X POST -d @company.json
    

কারণ: অবৈধ বা বিকৃত ইনপুট

যদি JSON থেকে XML নীতি ইনপুট পার্স করে যা অবৈধ বা ত্রুটিপূর্ণ, তাহলে আপনি এই ত্রুটিটি পাবেন।

উদাহরণস্বরূপ, যদি JSON থেকে XML নীতিতে নিম্নলিখিত অবৈধ JSON ইনপুট হিসাবে প্রদান করা হয়,

[
    "args": ["name" : "Google" ]
]

আপনি ত্রুটি পাবেন:

"faultstring": "JSONToXML[Convert-JSONToXML]: Execution failed due to reason: Expecting { or [ at line 1"

রোগ নির্ণয়

  1. JSON থেকে XML নীতি সনাক্ত করুন যেখানে ত্রুটি ঘটেছে। আপনি ত্রুটি প্রতিক্রিয়ার faultstring উপাদানটিতে এই তথ্যটি খুঁজে পেতে পারেন। উদাহরণস্বরূপ, নিম্নলিখিত faultstring -এ, নীতির নাম হল Convert-JSONToXML :

    "faultstring": "JSONToXML[Convert-JSONToXML]: Execution failed due to reason: Expecting { or [ at line 1"
    
  2. ব্যর্থ 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>
    
  3. <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"
   }
}

আউটপুট ভেরিয়েবল পাওয়া যায় না

ত্রুটি কোড

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> উপাদানটি সংজ্ঞায়িত না হলে এই ত্রুটি ঘটে। <OutputVariable> উপাদানটি বাধ্যতামূলক যখন <Source> এলিমেন্টে সংজ্ঞায়িত ভেরিয়েবল টাইপ স্ট্রিং হয়।

রোগ নির্ণয়

  1. JSON থেকে XML নীতি সনাক্ত করুন যেখানে ত্রুটি ঘটেছে। আপনি ত্রুটি প্রতিক্রিয়ার faultstring উপাদানে এটি খুঁজে পেতে পারেন। উদাহরণস্বরূপ, নিম্নলিখিত faultstring -এ, নীতির নাম হল Check-JSONToXML :

    "faultstring": "JSONToXML[Check-JSONToXML]: Output variable is not available."
    
  2. ব্যর্থ 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>
    
  3. <Source> উপাদানে নির্দিষ্ট ভেরিয়েবলের ধরন নির্ধারণ করুন:

    1. API প্রক্সির মধ্যে কোডটি সনাক্ত করুন যেখানে ভেরিয়েবলটি প্রথমে সংজ্ঞায়িত করা হয়েছিল।
    2. একবার আপনি যে নীতিতে ভেরিয়েবলটিকে প্রথমে সংজ্ঞায়িত এবং পপুলেট করা হয়েছে তা বের করার পরে, আপনাকে সেই ভেরিয়েবলের ধরনটি নিম্নরূপ নির্ধারণ করতে হবে:
      1. টাইপ অ্যাট্রিবিউটের মান পরীক্ষা করুন (যদি উপস্থিত থাকে)।
      2. যদি টাইপ অ্যাট্রিবিউটটি উপস্থিত না থাকে তবে ভেরিয়েবলটিকে একটি স্ট্রিং হিসাবে বিবেচনা করা হয়।
    3. যদি ভেরিয়েবলের ধরনটি স্ট্রিং হয়, তবে এটি ত্রুটির কারণ। আপনি ভেরিয়েবল রেফারেন্সে সাধারণ ভেরিয়েবল এবং তাদের প্রকারগুলি সম্পর্কে শিখতে পারেন।

    উদাহরণস্বরূপ, উপরের 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 টাইপ স্ট্রিং হয়.

    এখন, স্মরণ করুন যে PostalCode ভেরিয়েবলটি JSONToXML নীতির <Source> উপাদানে ব্যবহৃত হয়েছে:

    <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>

সামঞ্জস্যপূর্ণ প্রকার

ত্রুটি কোড

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

রোগ নির্ণয়

  1. JSON থেকে XML নীতি সনাক্ত করুন যেখানে ত্রুটি ঘটেছে। আপনি ত্রুটি প্রতিক্রিয়ার faultstring উপাদানে এটি খুঁজে পেতে পারেন। উদাহরণস্বরূপ, নিম্নলিখিত faultstring -এ, নীতির নাম হল JSONToXML_checktype :

    "faultstring": "JSONToXML[JSONToXML_checktype]: String can not be assigned to message type."
    
  2. ব্যর্থ 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>
    
    
  3. <Source> এবং <OutputVariable> উপাদানগুলিতে নির্দিষ্ট ভেরিয়েবলের ধরন নির্ধারণ করুন:

    1. API প্রক্সির মধ্যে কোডটি সনাক্ত করুন যেখানে এই ভেরিয়েবলগুলির প্রতিটি প্রথমে সংজ্ঞায়িত করা হয়েছিল।
    2. একবার আপনি যে নীতিতে ভেরিয়েবলটিকে প্রথমে সংজ্ঞায়িত এবং পপুলেট করা হয়েছে তা বের করার পরে, আপনাকে সেই ভেরিয়েবলের ধরনটি নিম্নরূপ নির্ধারণ করতে হবে:
      1. টাইপ অ্যাট্রিবিউটের মান পরীক্ষা করুন (যদি উপস্থিত থাকে)।
      2. যদি টাইপ অ্যাট্রিবিউটটি উপস্থিত না থাকে তবে ভেরিয়েবলটিকে একটি স্ট্রিং হিসাবে বিবেচনা করা হয়।
    3. যদি <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 ভেরিয়েবলটি JSONToXML নীতির <Source> উপাদানে ব্যবহৃত হয়েছে:

    <Source>PostalCode</Source>
    

    একইভাবে, মনে রাখবেন যে response ভেরিয়েবলটি JSONToXML নীতির <OutputVariable> উপাদানে ব্যবহৃত হয়:

    <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>

অবৈধ উৎসের প্রকার

ত্রুটি কোড

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

রোগ নির্ণয়

  1. JSON থেকে XML নীতিতে ব্যবহৃত অবৈধ উৎসের ধরন শনাক্ত করুন। আপনি ত্রুটি বার্তা এই তথ্য খুঁজে পেতে পারেন. উদাহরণস্বরূপ, নিম্নলিখিত ত্রুটিতে, অবৈধ প্রকারটি হল পূর্ণসংখ্যা।

    "faultstring": "JSONToXML[class java.lang.Integer]: Invalid source type class java.lang.Integer. Valid source types are [message, string]."
    
  2. নির্দিষ্ট API প্রক্সিতে যেখানে ব্যর্থতা ঘটেছে সেখানে সমস্ত 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>
  1. <Source> উপাদানে নির্দিষ্ট ভেরিয়েবলের ধরন নির্ধারণ করুন:

    1. API প্রক্সির মধ্যে কোডটি সনাক্ত করুন যেখানে এই ভেরিয়েবলটি প্রথমে সংজ্ঞায়িত করা হয়েছিল।
    2. একবার আপনি যে নীতিতে ভেরিয়েবলটিকে প্রথমে সংজ্ঞায়িত এবং পপুলেট করা হয়েছে তা বের করার পরে, আপনাকে সেই ভেরিয়েবলের ধরনটি নিম্নরূপ নির্ধারণ করতে হবে:
      1. টাইপ অ্যাট্রিবিউটের মান পরীক্ষা করুন (যদি উপস্থিত থাকে)।
      2. যদি টাইপ অ্যাট্রিবিউটটি উপস্থিত না থাকে তবে ভেরিয়েবলটিকে একটি স্ট্রিং হিসাবে বিবেচনা করা হয়।
    3. যদি <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 ভেরিয়েবলটি JSONToXML নীতির <Source> উপাদানে ব্যবহৃত হয়:

    <Source>EmployeeID</Source>
    

    কারণ এই ভেরিয়েবলের ধরনটি হল Integer , যা একটি বৈধ <Source> প্রকার নয়, API প্রক্সি ত্রুটির সাথে ব্যর্থ হয়:

    steps.json2xml.InvalidSourceType
    

রেজোলিউশন

নিশ্চিত করুন যে <Source> উপাদানটি নির্দিষ্ট করতে ব্যবহৃত ভেরিয়েবলের ধরনটি বৈধ। বৈধ <Source> প্রকারগুলি হল message এবং string

JSONToXML নীতির সাথে উপরের ত্রুটিটি এড়াতে, আপনি অনুরোধ ভেরিয়েবল ব্যবহার করতে পারেন যা টাইপ বার্তা বা অন্য কোনো স্ট্রিং যা একটি বৈধ JSON পেলোড।