আমি যেমন একটি বিষয় স্ট্রিংফাই করছি {'foo': 'bar'}
আমি কীভাবে কোনও বস্তুর কাছে স্ট্রিংটি ফিরিয়ে আনতে পারি?
আমি যেমন একটি বিষয় স্ট্রিংফাই করছি {'foo': 'bar'}
আমি কীভাবে কোনও বস্তুর কাছে স্ট্রিংটি ফিরিয়ে আনতে পারি?
উত্তর:
আপনাকে করার প্রয়োজন JSON.parse()
পংক্তি।
var str = '{"hello":"world"}';
try {
var obj = JSON.parse(str); // this is how you parse a string into JSON
document.body.innerHTML += obj.hello;
} catch (ex) {
console.error(ex);
}
JSON.parse
এর বিপরীত JSON.stringify
।
JSON.stringify
এবং JSON.parse
প্রায় ওপোসাইট, এবং "সাধারণত" এই ধরণের জিনিস কাজ করবে:
var obj = ...;
var json = JSON.stringify(obj);
var obj2 = JSON.parse(json);
যাতে আপত্তি এবং আপত্তি 2 "একই"।
তবে সচেতন হওয়ার কিছু সীমাবদ্ধতা রয়েছে। আপনি সাধারণ জিনিসগুলির সাথে কাজ করছেন বলে প্রায়শই এই বিষয়গুলি গুরুত্ব দেয় না। তবে আমি এই সহায়িকার ফাংশনটি ব্যবহার করে তাদের কয়েকটি এখানে চিত্রিত করব:
function jsonrepack( obj ) { return JSON.parse(JSON.stringify(obj) ); }
আপনি কেবলমাত্র ownProperties
বস্তুটি পাবেন এবং প্রোটোটাইপগুলি হারাবেন:
var MyClass = function() { this.foo="foo"; }
MyClass.prototype = { bar:"bar" }
var o = new MyClass();
var oo = jsonrepack(o);
console.log(oo.bar); // undefined
console.log( oo instanceof MyClass ); // false
আপনি পরিচয় হারাবেন:
var o = {};
var oo = jsonrepack(o);
console.log( o === oo ); // false
কার্যগুলি টিকে থাকবে না:
jsonrepack( { f:function(){} } ); // Returns {}
তারিখের অবজেক্টগুলি স্ট্রিং হিসাবে শেষ হয়:
jsonrepack(new Date(1990,2,1)); // Returns '1990-02-01T16:00:00.000Z'
অপরিবর্তিত মানগুলি টিকে থাকবে না:
var v = { x:undefined }
console.log("x" in v); // true
console.log("x" in jsonrepack(v)); // false
কোনও toJSON
ক্রিয়াকলাপ সরবরাহকারী অবজেক্টগুলি সঠিকভাবে আচরণ করতে পারে না।
x = { f:"foo", toJSON:function(){ return "EGAD"; } }
jsonrepack(x) // Returns 'EGAD'
আমি নিশ্চিত যে অন্যান্য বিল্ট-ইন টাইপগুলির সাথেও সমস্যা আছে। (এই সমস্তটি নোড.জেএস ব্যবহার করে পরীক্ষা করা হয়েছিল যাতে আপনার পরিবেশের উপর নির্ভর করে আপনি কিছুটা আলাদা আচরণ পেতে পারেন)।
যখন এটি কোন ব্যাপার কখনও কখনও অতিরিক্ত পরামিতি ব্যবহার পরাস্ত করা যাবে JSON.parse
এবং JSON.stringify
। উদাহরণ স্বরূপ:
function MyClass (v) {
this.date = new Date(v.year,1,1);
this.name = "an object";
};
MyClass.prototype.dance = function() {console.log("I'm dancing"); }
var o = new MyClass({year:2010});
var s = JSON.stringify(o);
// Smart unpack function
var o2 = JSON.parse( s, function(k,v){
if(k==="") {
var rv = new MyClass(1990,0,0);
rv.date = v.date;
rv.name = v.name;
return rv
} else if(k==="date") {
return new Date( Date.parse(v) );
} else { return v; } } );
console.log(o); // { date: <Mon Feb 01 2010 ...>, name: 'an object' }
console.log(o.constructor); // [Function: MyClass]
o.dance(); // I'm dancing
console.log(o2); // { date: <Mon Feb 01 2010 ...>, name: 'an object' }
console.log(o2.constructor) // [Function: MyClass]
o2.dance(); // I'm dancing
JSON SPEC
{ bar:"bar" }
(আপনার প্রোটোটাইপ থেকে) বৈধ জেএসন হিসাবে বিবেচনা করা হয় না কারণ foo
স্ট্রিংয়ের পরিবর্তে পরিবর্তনশীল। বৈধ জসন এর key
একটি হওয়া দরকার string
।
JSON.parse
। আমি কেবল সতর্ক করছি যে এমন অনেকগুলি কেস রয়েছে যা সঠিকভাবে পরিচালনা করবে না। আপনি যদি খাঁটি আদিম ডেটা (কোনও শ্রেণি, প্রোটোটাইপস) এবং JSON দ্বারা সমর্থিত কেবলমাত্র ডেটাটাইপগুলি ব্যবহার করেন (কোনও তারিখ, এক্সএমএল, এইচটিএমএল ইত্যাদি) তবে আপনি ঠিক আছেন।
X = { foo:"bar" }
একইরূপ X = { "foo":"bar" }
যা X = {}; X.foo = "bar"
একই, X={}; X["foo"] = "bar"
ফলাফল 4 সমস্ত ক্ষেত্রে একই জিনিস ident এটি উত্পন্ন JSON এর বৈধতার কোনও পার্থক্য করে না।
http://jsbin.com/tidob/1/edit?js,console,output
নেটিভ জেএসওএন অবজেক্টে দুটি কী পদ্ধতি রয়েছে।
1. JSON.parse()
2. JSON.stringify()
JSON.parse()
পদ্ধতি JSON স্ট্রিংকে পার্স - অর্থাৎ মূল জাভাস্ক্রিপ্ট অবজেক্ট পুনর্গঠনে
var jsObject = JSON.parse(jsonString);
JSON.stringify () পদ্ধতিটি একটি জাভাস্ক্রিপ্ট অবজেক্ট গ্রহণ করে এবং এর JSON সমতুল্য প্রদান করে।
var jsonString = JSON.stringify(jsObject);
প্রস্তাবিত ব্যবহার করা হয় JSON.parse
আপনি করতে পারেন এমন একটি বিকল্প রয়েছে:
var myObject = eval('(' + myJSONtext + ')');
এই সম্পর্কে কি
var parsed = new Function('return ' + stringifiedJSON )();
এটি এর জন্য একটি নিরাপদ বিকল্প eval
।
এটা দেখ.
http://jsfiddle.net/LD55x/
কোড:
var myobj = {};
myobj.name="javascriptisawesome";
myobj.age=25;
myobj.mobile=123456789;
debugger;
var str = JSON.stringify(myobj);
alert(str);
var obj = JSON.parse(str);
alert(obj);
$("#save").click(function () {
debugger
var xx = [];
var dd = { "firstname": "", "lastname": "", "address": "" };
var otable1 = $("#table1").dataTable().fnGetData();
for (var i = 0; i < otable1.length; i++) {
dd.firstname = otable1[i][0];
dd.lastname = otable1[i][1];
dd.address = otable1[i][2];
xx.push(dd);
var dd = { "firstname": "", "lastname": "", "address": "" };
}
JSON.stringify(alert(xx));
$.ajax({
url: '../Home/save',
type: 'POST',
data: JSON.stringify({ u: xx }),
contentType: 'application/json;',
dataType: 'json',
success: function (event) {
alert(event);
$("#table2").dataTable().fnDraw();
location.reload();
}
});
});
{foo: 'bar'}
বৈধ JSON নয় (যদিও এটি একটি বৈধ জাভাস্ক্রিপ্ট এক্সপ্রেশন)।