javascript - নিরাপদে একটি বস্তুর মধ্যে একটি JSON স্ট্রিং বাঁক




(17)

সারাংশ:

জাভাস্ক্রিপ্ট (উভয় ব্রাউজার এবং নোডজেএস) একটি JSON বস্তুর মধ্যে নির্মিত হয়েছে। এই বস্তুর উপর JSON সঙ্গে ডিল করার জন্য 2 সুবিধাজনক পদ্ধতি। তারা নিম্নলিখিত:

  1. JSON.parse() যুক্তি হিসাবে JSON নেয়, JS অবজেক্ট প্রদান করে
  2. JSON.stringify() JS JSON.stringify() বস্তুটি JSON অবজেক্টটি ফেরত হিসাবে JS অবজেক্ট নেয়

অন্যান্য অ্যাপ্লিকেশন:

এছাড়া JSON সাথে খুব সহজেই আচরণ করার জন্য তারা অন্য উপায়ে ব্যবহার করা যেতে পারে। উভয় JSON পদ্ধতির সমন্বয় আমাদের অ্যারে বা বস্তুর গভীর ক্লোনগুলি তৈরি করতে খুব সহজ করে। উদাহরণ স্বরূপ:

let arr1 = [1, 2, [3 ,4]];
let newArr = arr1.slice();

arr1[2][0] = 'changed'; 
console.log(newArr); // not a deep clone

let arr2 = [1, 2, [3 ,4]];
let newArrDeepclone = JSON.parse(JSON.stringify(arr2));

arr2[2][0] = 'changed'; 
console.log(newArrDeepclone); // A deep clone, values unchanged

JSON ডেটার একটি স্ট্রিং দেওয়া হলে, আপনি কীভাবে নিরাপদভাবে সেই স্ট্রিংটিকে একটি JavaScript বস্তুতে পরিণত করতে পারেন?

স্পষ্টতই আপনি এই মত কিছু অসহায়ভাবে করতে পারেন ...

var obj = eval("(" + json + ')');

... কিন্তু এটি আমাদেরকে অন্যান্য কোড ধারণকারী জসন স্ট্রিংকে দুর্বল করে দেয়, যা সহজেই প্রত্যক্ষ করা খুব বিপজ্জনক বলে মনে হয়।


JQuery পদ্ধতি এখন বাতিল করা হয়। পরিবর্তে এই পদ্ধতি ব্যবহার করুন:

let jsonObject = JSON.parse(jsonString);

অব্যবহৃত jQuery কার্যকারিতা ব্যবহার করে আসল উত্তর :

আপনি যদি jQuery ব্যবহার করছেন শুধু ব্যবহার করুন:

jQuery.parseJSON( jsonString );

এটি আপনি ঠিক কি খুঁজছেন (দেখুন jQuery documentation )।


JSON.parse () একটি JSON অবজেক্টে ফাংশনে প্রেরিত কোনও JSON স্ট্রিংকে রূপান্তরিত করে।

আরও ভাল বোঝার জন্য আপনার ব্রাউজারের এলিমেন্টটি খুলতে F12 টিপুন এবং নিম্নোক্ত কমান্ডগুলি লিখতে কনসোলে যান: -

var response = '{"result":true,"count":1}'; //sample json object(string form)
JSON.parse(response); //converts passed string to JSON Object.

এখন কমান্ড চালান: -

console.log(JSON.parse(response));

আপনি অবজেক্ট হিসাবে ফলাফল পাবেন {ফলাফল: সত্য, গণনা: 1}।

এই অবজেক্টটি ব্যবহার করার জন্য, আপনি এটি পরিবর্তন করতে পারেন ভেরিয়েবলের বলুন obj: -

var obj = JSON.parse(response);

এখন obj এবং dot (।) অপারেটর ব্যবহার করে আপনি JSON অবজেক্টের বৈশিষ্ট্যগুলি অ্যাক্সেস করতে পারেন।

কমান্ড চালানোর চেষ্টা করুন

console.log(obj.result);

JSON.parse (), এবং জাভাস্ক্রিপ্ট বস্তুটি জাভাস্ক্রিপ্ট অবজেক্টের সাথে প্যাসেঞ্জ করুন।

JSON.parse(jsonString)

এখানে, JSON জেসন ডেটাসেট প্রক্রিয়া করতে প্রতিনিধিত্ব করে।

উদাহরণ, কল্পনা করুন আমরা একটি ওয়েব সার্ভার থেকে এই লেখাটি পেয়েছি:

'{ "name":"John", "age":30, "city":"New York"}'

জেসন বস্তুর মধ্যে পার্স করতে:

var obj = JSON.parse('{ "name":"John", "age":30, "city":"New York"}'); 

এখানে obj অনুসরণ অনুরূপ JSON বস্তু।

{ "name":"John", "age":30, "city":"New York"}

ব্যবহৃত মান আনতে। অপারেটর উদাহরণ:

obj.name // John
obj.age //30

বিপরীত স্থানান্তর করতে, একটি জাভাস্ক্রিপ্ট বস্তুকে JSON.stringify () সহ একটি স্ট্রিং রূপান্তর করুন।


আপনি ফিল্টার করার জন্য reviver ফাংশন ব্যবহার করতে পারেন।

var data = JSON.parse(jsonString, function reviver(key, value) {
   //your code here to filter
});

আরো তথ্যের জন্য JSON.parse(jsonString) পড়তে


আপনি যদি jQuery ব্যবহার করছেন, তবে আপনি কেবল $.getJSON(url, function(data) { }); করতে পারেন $.getJSON(url, function(data) { });

তারপর আপনি data.key1.something মত তথ্য করতে পারেন, data.key1.something_else ইত্যাদি।


আমি একটি "ভাল" উপায় খুঁজে পাওয়া যায় নি:

CoffeeScript মধ্যে:

try data = JSON.parse(jqxhr.responseText)
data ||= { message: 'Server error, please retry' }

জাভাস্ক্রিপ্টে:

var data;

try {
  data = JSON.parse(jqxhr.responseText);
} catch (_error) {}

data || (data = {
  message: 'Server error, please retry'
});

আমি এটি করার অন্যান্য উপায় সম্পর্কে নিশ্চিত নই তবে এটি প্রোটোটাইপে (JSON টিউটোরিয়াল) কিভাবে করে তা এখানে।

new Ajax.Request('/some_url', {
  method:'get',
  requestHeaders: {Accept: 'application/json'},
  onSuccess: function(transport){
    var json = transport.responseText.evalJSON(true);
  }
});

যুক্তি হিসাবে evalJSON () সঙ্গে কলিং আগত স্ট্রিং sanitizes।


এই তথ্য বস্তুর সাথে পদ্ধতি ব্যবহার করে দেখুন। প্রাক্তন: Data='{result:true,count:1} '

try {
  eval('var obj=' + Data);
  console.log(obj.count);
}
catch(e) {
  console.log(e.message);
}

আপনি সিরিয়াল পোর্ট প্রোগ্রামিং সঙ্গে কাজ করা হয় যখন এই পদ্ধতি সত্যিই Nodejs সাহায্য করে


এই সমস্যা বলে মনে হচ্ছে:

অ্যাজাক্স ওয়েবসকেট ইত্যাদির মাধ্যমে একটি ইনপুট পাওয়া যায় এবং এটি সর্বদা স্ট্রিং ফর্ম্যাটে হতে পারে - তবে এটি JSON.parsable কিনা তা জানতে হবে। দ্বিগুণ হয়, যদি আপনি সর্বদা এটি একটি JSON.parse এর মাধ্যমে চালান, তবে প্রোগ্রামটি সফলভাবে চালিয়ে যেতে পারে তবে আপনি এখনও "ত্রুটি: অপ্রত্যাশিত টোকেন" x '"সহ দ্রষ্টব্যে কসরত একটি ত্রুটি দেখতে পাবেন।

var data;

try {
  data = JSON.parse(jqxhr.responseText);
} catch (_error) {}

data || (data = {
  message: 'Server error, please retry'
});

বস্তুকে JSON এ রূপান্তর করা, এবং তারপরে এটি বিশ্লেষণ করা, আমার জন্য কাজ করে, যেমন:

JSON.parse(JSON.stringify(object))

যদি আপনার জাভাস্ক্রিপ্ট Mootools হয় JSON.parse ফ্রেমওয়ার্ক দ্বারা বেনামী হবে।
নিরাপদভাবে কোনও JSON স্ট্রিংকে কোনও বস্তুতে পরিণত করার জন্য একটি বৈধ syntax হবে:

var object = JSON.decode(string[, secure]);

তাছাড়া একটি JSON Request সরাসরি একটি বিশ্লেষণ করতে সক্ষম একটি বস্তু বাড়াতে পারে।
আপনি এখানে জেসন কাঁচা ডেটা কিভাবে চালু করতে পারেন সেটি দেখতে পারেন:

http://jsfiddle.net/chetabahana/qbx9b5pm/


MSDN এ নিম্নলিখিত লিঙ্কটিতে প্রতিনিধিত্ব করা সহজ কোডটি ব্যবহার করুন।

var jsontext = '{"firstname":"Jesper","surname":"Aaberg","phone":["555-0100","555-0120"]}';
var contact = JSON.parse(jsontext);

এবং বিপরীত

var str = JSON.stringify(arr);

JSON.parse(jsonString) একটি বিশুদ্ধ জাভাস্ক্রিপ্ট পদ্ধতির যতক্ষণ আপনি একটি যুক্তিসঙ্গত আধুনিক ব্রাউজার গ্যারান্টি পারেন।


আনুষ্ঠানিকভাবে নথিভুক্ত করা :

JSON.parse() পদ্ধতিটি একটি JSON স্ট্রিংকে JSON.parse() করে, যা স্ট্রিং দ্বারা বর্ণিত JavaScript মান বা বস্তুর গঠন করে। একটি reviver ফাংশন ফাংশন প্রদান করা যেতে পারে এমন বস্তুর উপর একটি রূপান্তর সঞ্চালন করার আগে এটি প্রদান করা হয়।

বাক্য গঠন

JSON.parse(text[, reviver])

পরামিতি

পাঠ

JSON হিসাবে পার্স স্ট্রিং। JSON সিনট্যাক্সের বর্ণনাটির জন্য JSON অবজেক্টটি দেখুন।

রিভিভার (ঐচ্ছিক)

যদি একটি ফাংশন থাকে, এটি মূলত প্যারিসিং দ্বারা উত্পাদিত মানটি কীভাবে ফেরত আসার আগে রূপান্তরিত হয় তা নির্ধারণ করে।

ফেরত মূল্য

প্রদত্ত JSON টেক্সট সংশ্লিষ্ট বস্তু।

ব্যতিক্রমসমূহ

প্যারিসের স্ট্রিং বৈধ JSON না থাকলে একটি সিনট্যাক্স ত্রুটি ব্যতিক্রম।


সম্পাদনা: এই উত্তর IE <7 এর জন্য, আধুনিক ব্রাউজারগুলির জন্য জনাথন এর উত্তরটি যাচাই করুন।

সম্পাদনা: এই উত্তরটি পুরানো এবং জনাথন এর উত্তর উপরে ( JSON.parse(jsonString) ) এখন সেরা উত্তর

JSON.org এর জাভাস্ক্রিপ্টের জন্য 4 টি ভিন্ন ভিন্ন সহ বিভিন্ন ভাষার জন্য JSON পার্সার রয়েছে। আমি বিশ্বাস করি বেশিরভাগ লোকেরা json2.js তাদের json2.js বাস্তবায়ন বিবেচনা করবে।


JSON.parse(jsonString);

json.parse বস্তুর মধ্যে পরিবর্তন হবে।







json