object <=> Json با دوجو
پنجشنبه, ۱۰ دی ۱۳۸۸در برنامه هایی که با تکنولوژی ای جکس نوشته میشن استفاده از Json به خاطر حجم کم و … (دلایل دیگه ای که من نمیدونم) امری بدیهی شده. بعضی از مواقع باید آبجکت به رشته و یا رشته به آبجکت تبدیل گردد. دو تابع مفید در دوجو:
dojo.toJson : ورودی این تابع ، آبجکت است و رشته ای Json را به عنوان خروجی ارسال می کند.
// a simple object
var obj = { a:"one", b:3, c:true };
// convert it to a string:
var data = dojo.toJson(obj);
console.log(data, typeof data);
>>> {"a":"one","b":3,"c":true} string
dojo.fromJson: وروردی تابع ،رشته است و آبجکتی را به عنوان خروجی ارسال می کند.
var json = '{"a":"one","b":3,"c":true}';
var obj = dojo.fromJson(json);
console.log(obj.a, obj.b, obj.c);
>>> one 3 true
dojo.objectToQuery: همونطور که در مثال می بینید این تایع آبجکتی را به عنوان ورودی گرفته و آن را تبدیل به کوئری کرده و به خروجی می دهد.
(کوئری رشته ای است که در موقع ارسال فرم با تکنیک GET در مرورگر دیده میشود)
var uri = "http://some.server.org/somecontext/";
var query = {
foo: ["bar", "baz"],
bit: "byte"
};
//Assemble the new uri with its query string attached.
var queryStr = dojo.objectToQuery(query);
uri = uri + "?" + queryStr;
//The uri should look like:
// http://some.server.org/somecontext/?foo=bar&foo=bar2&bit=byte
و تابع dojo.queryToObject که دقیقا برعکس بالا عمل میکند:
var uri = "http://some.server.org/somecontext/?foo=bar&foo=bar2&bit=byte";
var query = uri.substring(uri.indexOf("?") + 1, uri.length);
var queryObject = dojo.queryToObject(query);
//The structure of queryObject will be:
// {
// foo: ["bar", "bar2],
// bit: "byte"
// }
و توابع دیگری مانند formToJson و formToQuery [که قبلا توضیح دادم]
و اگر به بحث Object references در Json علاقه دارید باید از اکستنشن dojox.json.ref استفاده کنید.