ব্রাউজার-দেশীয় JSON সমর্থন (উইন্ডো। জেএসএন)


92

আমি কিছু ব্রাউজারের রেফারেন্স দেখেছি যাজকের মাধ্যমে স্থানীয়ভাবে JSON পার্সিং / অবজেক্টের সিরিয়ালাইজেশন নিরাপদে এবং দক্ষতার সাথে সমর্থন করে window.JSONতবে বিশদটি এড়ানো শক্ত নয়। কেউ কি সঠিক দিক নির্দেশ করতে পারে? এই অবজেক্টটি প্রকাশের পদ্ধতিগুলি কী কী? এটি কোন ব্রাউজারের অধীনে সমর্থিত?


8
দেখুন আমি কখন JSON পার্সিং ব্যবহার করতে পারি? JSON অবজেক্টের জন্য স্থানীয় সমর্থন সহ ব্রাউজারগুলিতে তথ্যের জন্য ।
আউটিস

উত্তর:


108

সমস্ত আধুনিক ব্রাউজারগুলি নেটিভ জেএসএন এনকোডিং / ডিকোডিং (ইন্টারনেট এক্সপ্লোরার 8+, ফায়ারফক্স 3.1+, সাফারি 4+ এবং ক্রোম 3+) সমর্থন করে। মূলত, JSON.parse(str)JSON স্ট্রিংকে বিশ্লেষণ করবে strএবং একটি বস্তুটি ফিরিয়ে দেবে এবং বস্তুর JSON.stringify(obj)JSON উপস্থাপনা ফিরিয়ে দেবে obj

এমডিএন নিবন্ধে আরও বিশদ ।


আমি জানি যে সমর্থনটি ব্যাপক নয়, তবে এই পদ্ধতিটি ব্যবহার করা স্ট্রিং আইভেল () এর চেয়ে অনেক দ্রুত এবং নিরাপদ হওয়া উচিত, তাই আমি যেখানে এটি উপলব্ধ সেখানে এটি ব্যবহার করতে চাই। অন্যান্য ব্রাউজারগুলির সমর্থন সম্পর্কে কোনও ধারণা?
লেভিক

17
ওহ, এবং একটি পাশ নোটে, কখনই ইভাল () JSON স্ট্রিং নেই। পরিবর্তে, উপলভ্য অনেকগুলি JSON পার্সিং লাইব্রেরি ব্যবহার করুন।
সাশা চেদিগোভ

4
@ কলবিয়েরে: হ্যাঁ, এটিই আমি প্রায়শই দেখি। আপনি jQuery এর চুরি করতে পারে।
সাশা চেদিগোভ

4
রেফারেন্সের জন্য, আপনি যখন "NEVER Eval () ..." বলছেন এবং তারপরে উল্লেখ করুন যে json2 হল জনপ্রিয় সমর্থিত লাইব্রেরি, তখন এটি লক্ষ করা যায় যে এটি ইওল ব্যবহার করে না, তবে এটি প্রথমে রেজেক্স ব্যবহার করে স্ট্রিংটিকে বৈধতা দেওয়ার চেষ্টা করে। এটি স্ট্রিংকে বৈধকরণ ও বিশ্লেষণের চেয়ে দ্রুততর, যদিও পার্সার রয়েছে যা তুলনামূলক পারফরম্যান্সের সাথে বৈধতা দেয় না। json2.js এখনও সম্ভবত সবচেয়ে ভাল পছন্দ, যদি কেবল তার বিস্তৃততার জন্য হয়।
TheXenocide

4
@ দ্য এক্সেনোসাইড: ভালো কথা, তবে এর লেখক সম্ভবত সেই বৈধতা কোডটিতে বেশ ভাল সময় ব্যয় করেছেন, তাই আমি বলি কখনই eval()জেএসএন স্ট্রিংগুলি না কারণ আপনি চক্রটি পুনর্বহাল করবেন এবং আপনি সম্ভবত এটি ভুল পেয়ে যাবেন।
সাশা চেদিগোভ

30

jQuery-1.7.1.js - 555 লাইন ...

parseJSON: function( data ) {
    if ( typeof data !== "string" || !data ) {
        return null;
    }

    // Make sure leading/trailing whitespace is removed (IE can't handle it)
    data = jQuery.trim( data );

    // Attempt to parse using the native JSON parser first
    if ( window.JSON && window.JSON.parse ) {
        return window.JSON.parse( data );
    }

    // Make sure the incoming data is actual JSON
    // Logic borrowed from http://json.org/json2.js
    if ( rvalidchars.test( data.replace( rvalidescape, "@" )
        .replace( rvalidtokens, "]" )
        .replace( rvalidbraces, "")) ) {

        return ( new Function( "return " + data ) )();

    }
    jQuery.error( "Invalid JSON: " + data );
}





rvalidchars = /^[\],:{}\s]*$/,

rvalidescape = /\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,

rvalidtokens = /"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,

rvalidbraces = /(?:^|:|,)(?:\s*\[)+/g,

4
ভাল লাগল JQuery ব্যবহার করার জন্য ভাল যুক্তি।
ওয়ানওয়ার্ল্ড

11
আরও jQuery এর ভিতরে দেখার জন্য একটি যুক্তি মত =)
ওলগা

13

Json2.js ব্যবহারের সুবিধাটি হ'ল ব্রাউজারটি ইতিমধ্যে যদি না থাকে তবে এটি কেবলমাত্র একটি পার্সার ইনস্টল করবে। আপনি পুরানো ব্রাউজারগুলির সাথে সামঞ্জস্য বজায় রাখতে পারেন, তবে যদি এটি উপলব্ধ থাকে তবে দেশীয় জেএসএন পার্সার (যা আরও সুরক্ষিত এবং দ্রুত) ব্যবহার করুন।

নেটিভ জেএসএন সহ ব্রাউজারগুলি:

  • আইই 8 +
  • ফায়ারফক্স ৩.১+
  • সাফারি 4.0.3+
  • অপেরা 10.5+

জি।


10

[মিউজিক ফ্রিক মন্তব্য বাড়ানো ]

আপনি যদি jQuery ব্যবহার করেন তবে পার্সজেএসএন ব্যবহার করুন

var obj = jQuery.parseJSON(data)

ব্রাউজার .JSON.parse সমর্থন করে এবং (যদি উপলব্ধ থাকে) নেটিভ উইন্ডোকে কল করে Intern JSON.parse অভ্যন্তরীণভাবে এটি পরীক্ষা করে।

যদি তা না হয় তবে নিজেই পার্স করে।


8

এই থ্রেডটিতে যে কেউ চলে তার সুবিধার জন্য - একটি আপ-টু-ডেটের জন্য, JSON অবজেক্ট সমর্থন করে এমন ব্রাউজারগুলির নির্দিষ্ট তালিকা এখানে দেখুন। । একটি সংক্ষিপ্ত জেনেরিক উত্তর - ২০১৩+ সালে সত্যিকার অর্থে গুরুত্বপূর্ণ সমস্ত ব্রাউজার।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.