আমি দেখতে পেলাম যে এক্সএমএল থেকে জেএসএনের একটি বড় সুবিধা হ'ল আমাকে কীভাবে ডেটা ফর্ম্যাট করবেন তা সিদ্ধান্ত নিতে হবে না। যেমন কেউ কেউ দেখিয়েছে, এক্সএমএলে এমনকি সাধারণ ডেটা স্ট্রাকচারগুলি করার অনেকগুলি উপায় রয়েছে - উপাদান হিসাবে, বৈশিষ্ট্যগুলির মান হিসাবে, ইত্যাদি Then একটি জগাখিচুড়ি.
এক্সএমএল এর গুণাবলী থাকতে পারে, তবে বেসিক ডেটা এক্সচেঞ্জের জন্য, জেএসএন আরও অনেক কমপ্যাক্ট এবং ডাইরেক্ট। পাইথন বিকাশকারী হিসাবে, জেএসএন এবং পাইথনে সাধারণ ডেটা ধরণের মধ্যে কোনও প্রতিবন্ধকতা মেলে না। সুতরাং আমি যদি কোনও এজিএক্স ক্যোয়ারির জন্য একটি সার্ভার-সাইড হ্যান্ডলার লিখছিলাম যা কোনও বিশেষ স্কি রিসর্টের জন্য তুষার পরিস্থিতি সম্পর্কে জিজ্ঞাসা করছিল, আমি নীচের মত একটি অভিধান তৈরি করব:
conditions = {
'new_snow_24': 5.0,
'new_snow_48': 8.5,
'base_depth': 88.0,
'comments': 'Deep and steep!',
'chains_required': True,
}
return simplejson.dumps(conditions) # Encode and dump `conditions` as a JSON string
জেএসএনের মাধ্যমে অনুবাদ করা হলে (পাইথনের জন্য 'সিম্পজসন' এর মতো একটি লাইব্রেরি ব্যবহার করে), ফলস্বরূপ জেএসওএন কাঠামোটি প্রায় অভিন্ন দেখায় (জেএসওন ব্যতীত, বুলিয়ানগুলি নিম্ন-বর্ণযুক্ত)।
কাঠামোটি ডিকোডিংয়ের জন্য কেবল একটি JSON পার্সার প্রয়োজন, এটি জাভাস্ক্রিপ্টের জন্য হোক বা দেশীয় আইফোন অ্যাপ্লিকেশনটির জন্য উদ্দেশ্য-সি বা সি # বা পাইথন ক্লায়েন্ট। ফ্লোটগুলি ফ্লোট হিসাবে ব্যাখ্যা করা হবে, স্ট্রিংগুলির মতো স্ট্রিংগুলি এবং বুলিয়ান হিসাবে বুলেটিয়ান। পাইথনের 'সিম্পলজসন' লাইব্রেরিটি ব্যবহার করে, একটি simplejson.loads(some_json_string)
বিবৃতি আমাকে একটি সম্পূর্ণ ডেটা কাঠামো ফিরিয়ে আনবে যেমন আমি ঠিক উপরের উদাহরণে তৈরি করেছি।
যদি আমি এক্সএমএল লিখি, আমাকে উপাদান বা বৈশিষ্ট্যগুলি করবেন কিনা তা সিদ্ধান্ত নিতে হবে। নিম্নলিখিত দুটিই বৈধ:
<conditions>
<new-snow-24>5</new-snow-24>
<new-snow-48>8.5</new-snow-48>
<chains-required>yes</chains-required>
<comments>deep and steep!</comments>
</conditions>
<conditions newSnow24="5" newSnow48="8.5" chainsRequired="yes">
<comments>deep and steep!</comments>
</conditions>
সুতরাং আমি কেবল ক্লায়েন্টকে যে ডেটা পাঠাতে চাইতে পারি তা নিয়েই আমাকে ভাবতে হবে না, কীভাবে এটি ফর্ম্যাট করবেন সে সম্পর্কে আমাকে ভাবতে হবে। এক্সএমএল, এর নিয়মগুলির সাথে আরও কঠোর হয়ে প্লেইন এসজিএমএল থেকে সরল থাকা সত্ত্বেও, এখনও সেই ডেটা সম্পর্কে চিন্তাভাবনা করার অনেক উপায় সরবরাহ করে। তারপরে আমাকে এটি তৈরি করতে হবে। আমি কেবল পাইথন অভিধান (বা অন্যান্য সাধারণ ডেটা স্ট্রাকচার) নিতে পারি না এবং "আমার এক্সএমএলে নিজেকে যান" বলে দিতে পারি না। আমি কোনও এক্সএমএল ডকুমেন্ট গ্রহণ করতে পারি নি এবং সাথে সাথে কাস্টম পার্সার না লিখে বা এক্সএমএল স্কিমা / রিলাক্স এনজি এবং এই জাতীয় ব্যথার অতিরিক্ত ওভারহেডের প্রয়োজন ছাড়াই "অবজেক্টস এবং ডেটা স্ট্রাকচারে নিজেকে পরিণত করুন" বলতে পারি।
সংক্ষিপ্তসারটি হ'ল এটি খুব সহজ এবং জেএসএনে ডেটা এনকোড করা এবং বিশেষত দ্রুত ইন্টারচেঞ্জের জন্য ডিকোড করতে আরও অনেক বেশি সরাসরি। এটি জাভাস্ক্রিপ্ট / জেএসএন-তে অন্তর্নির্মিত বেসিক ডেটা টাইপ (তালিকাগুলি, অভিধান ইত্যাদি) হিসাবে গতিশীল ভাষার পটভূমি থেকে আগত ব্যক্তিদের জন্য আরও বেশি প্রয়োগ করতে পারে পাইথন, পার্ল, রুবি ইত্যাদিতে একই বা অনুরূপ ডেটা ধরণের সরাসরি মানচিত্র map