Ø¨ÛØ§ÛÛØ¯ ÙØ±Ø¶ Ú©ÙÛÙ ÛÚ© Ø´ÛØ¡ Ù¾ÛÚÛØ¯Ù دارÛÙ Ù Ù ÛâØ®ÙØ§ÙÛ٠آ٠را ب٠رشت٠تبدÛÙ Ú©ÙÛ٠تا آ٠را ب٠ÛÚ© Ø´Ø¨Ú©Ù Ø¨ÙØ±Ø³ØªÛÙ ÛØ§ ÙÙØ· آ٠را Ø¨Ù ÙØµØ¯ ثبت Ú©Ø±Ø¯Ù Ø®Ø±ÙØ¬Û Ø¨Ú¯ÛØ±ÛÙ .
Ø¨Ù Ø·ÙØ± Ø·Ø¨ÛØ¹ÛØ ÚÙÛ٠رشتÙâØ§Û Ø¨Ø§ÛØ¯ ت٠ا٠ÙÛÚÚ¯ÛâÙØ§Û Ù ÙÙ Ø´ÛØ¡ را داشت٠باشد.
٠ا Ù ÛâØªÙØ§ÙÛ٠اÛ٠تبدÛ٠را اÛÙÚ¯ÙÙÙ Ù¾ÛØ§Ø¯ÙâØ³Ø§Ø²Û Ú©ÙÛÙ :
let user = {
name: "John",
age: 30,
toString() {
return `{name: "${this.name}", age: ${this.age}}`;
}
};
alert(user); // {name: "John", age: 30}
â¦Ø§Ù
ا در ÙØ±Ø§ÛÙØ¯ ØªÙØ³Ø¹ÙØ ÙÛÚÚ¯ÛâÙØ§Û Ø¬Ø¯ÛØ¯ اضاÙÙ Ù ÙÛÚÚ¯ÛâÙØ§Û ÙØ¯ÛÙ
Û Ø¯ÙØ¨Ø§Ø±Ù ÙØ§Ù
Ú¯Ø°Ø§Ø±Û Ù ØØ°Ù Ù
ÛâØ´ÙÙØ¯. Ø¨Ø±ÙØ²Ø±Ø³Ø§ÙÛ toString ÙØ± بار Ù
ÛâØªÙØ§Ùد Ø·Ø§ÙØªâÙØ±Ø³Ø§ باشد. Ù
ا Ù
ÛâØªÙØ§ÙÛÙ
در ÙÛÚÚ¯ÛâÙØ§Û Ø¢Ù ØÙÙ٠بزÙÛÙ
اÙ
ا اگر Ø´ÛØ¡ Ù¾ÛÚÛØ¯Ù باشد Ù Ø´ÛØ¡ÙØ§Û ØªÙØ¯Ø±ØªÙ را در ÙÛÚÚ¯ÛâÙØ§ داشت٠باشد ÚÛکار Ú©ÙÛÙ
Ø Ù
ا Ø¨Ø§ÛØ¯ تبدÛ٠آÙÙØ§ را ÙÙ
Ù¾ÛØ§Ø¯ÙâØ³Ø§Ø²Û Ú©ÙÛÙ
.
Ø®ÙØ´Ø¨Ø®ØªØ§ÙÙ ÙÛØ§Ø²Û ب٠ÙÙØ´ØªÙ Ú©Ø¯Û Ø¨Ø±Ø§Û Ú©ÙØªØ±Ù ت٠ا٠اÛÙÙØ§ ÙÛØ³Øª. از ÙØ¨Ù اÛÙ Ù Ø´Ú©Ù ØÙ شد٠است.
٠تد JSON.stringify
JSON (ÙØ´Ø§ÙÙâÚ¯Ø°Ø§Ø±Û Ø´ÛØ¡ Ø¬Ø§ÙØ§Ø§Ø³Ú©Ø±ÛÙ¾ØªØ Ø¬ÙÛâØ³Ø§Ù) ÛÚ© ÙØ±Ù ت Ú©ÙÛ Ø¨Ø±Ø§Û ÙÙ Ø§ÛØ´ Ù ÙØ¯Ø§Ø±Ùا Ù Ø´ÛØ¡Ùا است. جÙÛâØ³Ø§Ù Ø¯Ø± Ø§Ø³ØªØ§ÙØ¯Ø§Ø±Ø¯ RFC 4627 Ø´Ø±Ø Ø¯Ø§Ø¯Ù Ø´Ø¯Ù Ø§Ø³Øª. در ابتدا Ø¨Ø±Ø§Û Ø¬Ø§ÙØ§Ø§Ø³Ú©Ø±Ûپت ساخت٠شد ا٠ا Ø¨Ø³ÛØ§Ø±Û از زباÙâÙØ§Û دÛگر Ù٠کتابخاÙÙâÙØ§ÛÛ Ø¨Ø±Ø§Û Ø¨Ú©Ø§Ø±Ø¨Ø±Ø¯Ù Ø¢Ù Ø¯Ø§Ø±ÙØ¯. پس ÙÙÚ¯Ø§Ù Û Ú©Ù Ø³Ù Øª کاربر Ø³Ø§ÛØª از Ø¬Ø§ÙØ§Ø§Ø³Ú©Ø±Ûپت ٠س٠ت Ø³Ø±ÙØ± با زباÙâÙØ§Û Ruby/PHP/Java/ÛØ§ ÙØ± ÚÛØ² دÛگر ÙÙØ´ØªÙ Ø´Ø¯Ù Ø¨Ø§Ø´Ø¯Ø Ø§Ø³ØªÙØ§Ø¯Ù از جÛâØ³Ø§Ù Ø¨Ø±Ø§Û Ø±Ø¯ ٠بد٠کرد٠داد٠آسا٠است.
Ø¬Ø§ÙØ§Ø§Ø³Ú©Ø±Ûپت Ù ØªØ¯ÙØ§Û Ø²ÛØ± را دارد:
JSON.stringifyØ¨Ø±Ø§Û ØªØ¨Ø¯ÛÙ Ø´ÛØ¡Ùا ب٠جÛâØ³Ø§Ù.JSON.parseØ¨Ø±Ø§Û ØªØ¨Ø¯Û٠جÛâØ³Ø§Ù Ø¨Ù ÛÚ© Ø´ÛØ¡.
Ø¨Ø±Ø§Û Ù
Ø«Ø§ÙØ اÛÙØ¬Ø§ Ù
ا Ù
تد JSON.stringify را رÙÛ ÛÚ© Ø¯Ø§ÙØ´Ø¬Ù اجرا Ù
ÛâÚ©ÙÛÙ
:
let student = {
name: 'John',
age: 30,
isAdmin: false,
courses: ['html', 'css', 'js'],
spouse: null
};
let json = JSON.stringify(student);
alert(typeof json); // !Ù
ا ÛÚ© رشت٠دارÛÙ
alert(json);
/* :Ø´ÛØ¡ Ú©Ø¯Ú¯Ø°Ø§Ø±Û Ø´Ø¯Ù Ø¬ÛâØ³Ø§Ù
{
"name": "John",
"age": 30,
"isAdmin": false,
"courses": ["html", "css", "js"],
"spouse": null
}
*/
Ù
تد JSON.stringify(student)Ø´ÛØ¡ را Ø¯Ø±ÛØ§Ùت Ù
ÛâÚ©ÙØ¯ ٠آ٠را ب٠رشت٠تبدÛÙ Ù
ÛâÚ©ÙØ¯.
رشت٠json ØØ§ØµÙ را Ø´ÛØ¡ جÛâØ³Ø§Ù Ú©Ø¯Ú¯Ø°Ø§Ø±Û Ø´Ø¯Ù ÛØ§ Ø³Ø±ÛØ§ÙÛâØ´Ø¯Ù ÛØ§ Ù
Ø±ØªØ¨âØ´Ø¯Ù Ù
ÛâÚ¯ÙÛÙØ¯. Ù
ا Ø¨Ø±Ø§Û ÙØ±Ø³ØªØ§Ø¯Ù آ٠ب٠جاÛÛ ÛØ§ ÙØ±Ø§Ø± داد٠آ٠در ÛÚ© Ø§ÙØ¨Ø§Ø±Ù داد٠آÙ
Ø§Ø¯Ù ÙØ³ØªÛÙ
.
ÙØ·Ùا در ÙØ¸Ø± Ø¯Ø§Ø´ØªÙ Ø¨Ø§Ø´ÛØ¯ Ú©Ù ÛÚ© Ø´ÛØ¡ جÛâØ³Ø§Ù Ú©Ø¯Ú¯Ø°Ø§Ø±Û Ø´Ø¯Ù Ø¨Ø§ Ø´ÛØ¡ ÙÛØªØ±Ø§Ù ÚÙØ¯ ØªÙØ§Ùت Ù Ù٠دارد:
- رشتÙâÙØ§ از Ú©ÙØªÛØ´Ù Ø¯ÙØªØ§ÛÛ Ø§Ø³ØªÙØ§Ø¯Ù Ù
ÛâÚ©ÙÙØ¯. Ú©ÙØªÛØ´ÙâÙØ§Û ØªÚ©Û ÛØ§ backtickÙØ§ در جÛâØ³Ø§Ù Ø¬Ø§ÛÛ ÙØ¯Ø§Ø±Ùد. پس
'John'بÙ"John"تبدÛÙ Ù ÛâØ´ÙØ¯. - اسÙ
ÙÛÚÚ¯ÛâÙØ§Û Ø´ÛØ¡ ÙÙ
Ú©ÙØªÛØ´Ù Ø¯ÙØªØ§ÛÛ Ù
ÛâÚ¯ÛØ±Ùد. اÛ٠کار ÙØ§Ø²Ù
است. پس
age:30بÙ"age":30تبدÛÙ Ù ÛâØ´ÙØ¯.
Ù
تد JSON.stringify Ù
ÛâØªÙØ§Ùد رÙÛ Ù
ÙØ¯Ø§Ø±ÙØ§Û Ø§ÙÙÛÙ ÙÙ
اجرا Ø´ÙØ¯.
جÛâØ³Ø§Ù Ø§Ø² اÙÙØ§Ø¹ Ø¯Ø§Ø¯Ù Ø²ÛØ± Ù¾Ø´ØªÛØ¨Ø§ÙÛ Ù ÛâÚ©ÙØ¯:
- Ø´ÛØ¡Ùا
{ ... } - آراÛÙâÙØ§
[ ... ] - Ù
ÙØ¯Ø§Ø±ÙØ§Û Ø§ÙÙÛÙ:
- رشتÙâÙØ§Ø
- اعدادØ
- Ù
ÙØ¯Ø§Ø±ÙØ§Û boolean
true/falseØ null.
Ø¨Ø±Ø§Û Ù Ø«Ø§Ù:
// ÛÚ© عدد در جÛâØ³Ø§Ù ØªÙÙØ§ ÛÚ© عدد است
alert( JSON.stringify(1) ) // 1
// ÛÚ© رشت٠در جÛâØ³Ø§Ù ÙÙÙØ² ÙÙ
ÛÚ© رشت٠است اÙ
ا Ú©ÙØªÛØ´Ù Ø¯ÙØªØ§ÛÛ Ù
ÛâÚ¯ÛØ±Ø¯
alert( JSON.stringify('test') ) // "test"
alert( JSON.stringify(true) ); // true
alert( JSON.stringify([1, 2, 3]) ); // [1,2,3]
جÛâØ³Ø§Ù Ù
شخصÙâØ§Û Ø§Ø³Øª Ú©Ù ÙÙØ· با داد٠سر ٠کار دارد ٠از زبا٠Ù
ستÙÙ Ø§Ø³ØªØ Ù¾Ø³ Ø¨Ø¹Ø¶Û Ø§Ø² ÙÛÚÚ¯ÛâÙØ§Û Ø´ÛØ¡ Ù
Ø®ØµÙØµ Ø¬Ø§ÙØ§Ø§Ø³Ú©Ø±Ûپت ØªÙØ³Ø· JSON.stringify ÙØ§Ø¯ÛØ¯Ù Ú¯Ø±ÙØªÙ Ù
ÛâØ´ÙÙØ¯.
Ø¨Ø±Ø§Û Ù Ø«Ø§Ù:
- ÙÛÚÚ¯ÛâÙØ§Û ØªØ§Ø¨Ø¹Û (Ù ØªØ¯ÙØ§).
- Ù ÙØ¯Ø§Ø±Ùا Ù ÙÛÚÚ¯ÛâÙØ§Û س٠بÙÛ (symbolic).
- ÙÛÚÚ¯ÛâÙØ§ÛÛ Ú©Ù
undefinedرا در Ø®ÙØ¯ Ø°Ø®ÛØ±Ù Ø¯Ø§Ø±ÙØ¯.
let user = {
sayHi() { // ÙØ§Ø¯ÛدÙâÚ¯Ø±ÙØªÙ Ù
ÛâØ´ÙØ¯
alert("Hello");
},
[Symbol("id")]: 123, // ÙØ§Ø¯ÛدÙâÚ¯Ø±ÙØªÙ Ù
ÛâØ´ÙØ¯
something: undefined // ÙØ§Ø¯ÛدÙâÚ¯Ø±ÙØªÙ Ù
ÛâØ´ÙØ¯
};
alert( JSON.stringify(user) ); // {} (Ø´ÛØ¡ خاÙÛ)
٠ع٠ÙÙØ§ اÛÙ Ù ÙØ¶Ùع Ù Ø´Ú©ÙÛ ÙØ¯Ø§Ø±Ø¯. اگر اÛÙ ÚÛØ²Û ÙÛØ³Øª ک٠٠ا Ø¨Ø®ÙØ§ÙÛÙ Ø Ø¨Ù Ø²ÙØ¯Û Ø®ÙØ§ÙÛÙ Ø¯ÛØ¯ Ú©Ù ÚÚ¯ÙÙÙ ÙØ±Ø§ÛÙØ¯ را شخصÛâØ³Ø§Ø²Û Ú©ÙÛÙ .
ÛÚ© ÚÛØ² عاÙÛ Ø§Û٠است Ú©Ù Ø´ÛØ¡ÙØ§Û ØªÙØ¯Ø±ØªÙ ÙÙ Ù¾Ø´ØªÛØ¨Ø§ÙÛ Ù Ø¨Ù Ø·ÙØ± Ø®ÙØ¯Ú©Ø§Ø± تبدÛÙ Ù ÛâØ´ÙÙØ¯.
Ø¨Ø±Ø§Û Ù Ø«Ø§Ù:
let meetup = {
title: "Conference",
room: {
number: 23,
participants: ["john", "ann"]
}
};
alert( JSON.stringify(meetup) );
/* :تÙ
اÙ
ساختار ب٠رشت٠تبدÛ٠شد
{
"title":"Conference",
"room":{"number":23,"participants":["john","ann"]},
}
*/
Ù ØØ¯ÙØ¯ÛØª Ù Ù٠اÛ٠است: ÙØ¨Ø§Ûد ÙÛÚ Ù Ø±Ø¬Ø¹ Ø¯Ø§ÛØ±ÙâØ§Û ÙØ¬Ùد داشت٠باشد.
Ø¨Ø±Ø§Û Ù Ø«Ø§Ù:
let room = {
number: 23
};
let meetup = {
title: "Conference",
participants: ["john", "ann"]
};
meetup.place = room; // Ù
راجع٠Ù
ÛâÚ©ÙØ¯ room ب٠meetup
room.occupiedBy = meetup; // Ù
راجع٠Ù
ÛâÚ©ÙØ¯ meetup ب٠room
JSON.stringify(meetup); // Error: Converting circular structure to JSON
اÛÙØ¬Ø§Ø ÙØ±Ø§ÛÙØ¯ تبدÛ٠ب٠دÙÛÙ Ù
رجع Ø¯Ø§ÛØ±ÙâØ§Û Ø¨Ø§ شکست Ù
ÙØ§Ø¬Ù Ù
ÛâØ´ÙØ¯: room.occupiedBy ب٠meetup Ø±Ø¬ÙØ¹ Ù
ÛâÚ©ÙØ¯ Ù meetup.place ب٠room Ø±Ø¬ÙØ¹ Ù
ÛâÚ©ÙØ¯:
Ù Ø´Ù ÙÙ Ùکرد٠٠تغÛÛØ± شک٠دادÙ: تابع replacer
سÛÙØªÚ©Ù کاÙ
Ù JSON.stringify اÛÙÚ¯ÙÙ٠است:
let json = JSON.stringify(value[, replacer, space])
- value
- Ù ÙØ¯Ø§Ø±Û Ú©Ù Ú©Ø¯Ú¯Ø°Ø§Ø±Û Ù ÛâØ´ÙØ¯.
- replacer
- ÛÚ© آراÛ٠از ÙÛÚÚ¯ÛâÙØ§ÛÛ Ú©Ù Ø¨Ø§ÛØ¯ Ú©Ø¯Ú¯Ø°Ø§Ø±Û Ø´ÙÙØ¯ ÛØ§ ÛÚ© تابع
function(key, value). - space
- Ù ÙØ¯Ø§Ø± ÙØ§ØµÙ٠خاÙÛ Ú©Ù Ø¨Ø±Ø§Û ÙØ§ÙØ¨âØ¨ÙØ¯Û Ø§Ø³ØªÙØ§Ø¯Ù Ù ÛâØ´ÙØ¯.
اکثر اÙÙØ§ØªØ JSON.stringify تÙÙØ§ با آرگÙÙ
ا٠اÙÙ Ø§Ø³ØªÙØ§Ø¯Ù Ù
ÛâØ´ÙØ¯. اÙ
ا اگر Ù
ا Ø¨Ø®ÙØ§ÙÛÙ
Ú©Ù ÙØ±Ø§ÛÙØ¯ جاÛگزÛÙÛ Ø±Ø§ Ø¨ÙØªØ± Ú©ÙÛÙ
Ø Ù
Ø«ÙØ§ Ø¨Ø±Ø§Û Ø¬Ø¯Ø§Ø³Ø§Ø²Û Ù
رجعâÙØ§Û Ø¯Ø§ÛØ±ÙâØ§ÛØ Ù
ÛâØªÙØ§ÙÛÙ
از آرکÙÙ
ا٠دÙÙ
Ù JSON.stringify Ø§Ø³ØªÙØ§Ø¯Ù Ú©ÙÛÙ
.
اگر ÛÚ© آراÛ٠از ÙÛÚÚ¯ÛâÙØ§ را ب٠آ٠بدÙÛÙ Ø ØªÙÙØ§ اÛÙ ÙÛÚÚ¯ÛâÙØ§ Ú©Ø¯Ú¯Ø°Ø§Ø±Û Ù ÛâØ´ÙÙØ¯.
Ø¨Ø±Ø§Û Ù Ø«Ø§Ù:
let room = {
number: 23
};
let meetup = {
title: "Conference",
participants: [{name: "John"}, {name: "Alice"}],
place: room // Ù
راجع٠Ù
ÛâÚ©ÙØ¯ room ب٠meetup
};
room.occupiedBy = meetup; // Ù
راجع٠Ù
ÛâÚ©ÙØ¯ meetup ب٠room
alert( JSON.stringify(meetup, ['title', 'participants']) );
// {"title":"Conference","participants":[{},{}]}
Ø§ØØªÙ
Ø§ÙØ§ اÛÙØ¬Ø§ Ù
ا Ø¨Ø³ÛØ§Ø± سختâÚ¯ÛØ± ÙØ³ØªÛÙ
. ÙÛØ³Øª ÙÛÚÚ¯Û Ø¨Ø± رÙÛ ØªÙ
اÙ
ساختار Ø´ÛØ¡ اعÙ
ا٠شد٠است. پس پس Ø´ÛØ¡ÙØ§Û Ø¯Ø±ÙÙ participants خاÙÛ ÙØ³ØªÙد ÚÙÙ name درÙÙ ÙÛØ³Øª ÙÛØ³Øª.
Ø¨ÛØ§ÛÛØ¯ تÙ
اÙ
ÙÛÚÚ¯ÛâÙØ§ را ب٠جز room.occupiedBy ک٠باعث Ù
رجع Ø¯Ø§ÛØ±ÙâØ§Û Ø§Ø³Øª را اضاÙÙ Ú©ÙÛÙ
:
let room = {
number: 23
};
let meetup = {
title: "Conference",
participants: [{name: "John"}, {name: "Alice"}],
place: room // Ù
راجع٠Ù
ÛâÚ©ÙØ¯ room ب٠meetup
};
room.occupiedBy = meetup; // Ù
راجع٠Ù
ÛâÚ©ÙØ¯ meetup ب٠room
alert( JSON.stringify(meetup, ['title', 'participants', 'place', 'name', 'number']) );
/*
{
"title":"Conference",
"participants":[{"name":"John"},{"name":"Alice"}],
"place":{"number":23}
}
*/
ØØ§Ùا ÙÙ
Ù ÚÛØ² ب٠جز occupiedBy Ø³Ø±ÛØ§ÙÛ Ø´Ø¯ÙâØ§ÙØ¯. اÙ
ا ÙÛØ³Øª ÙÛÚÚ¯ÛâÙØ§ ÙÙÙØ² ÙÙ
Ø®ÛÙÛ Ø·ÙÙØ§ÙÛ Ø§Ø³Øª.
Ø®ÙØ´Ø¨Ø®ØªØ§ÙÙØ Ù
ا Ù
ÛâØªÙØ§ÙÛÙ
از ÛÚ© تابع Ø¨Ù Ø¬Ø§Û Ø¢Ø±Ø§ÛÙ Ø§Ø³ØªÙØ§Ø¯Ù Ú©ÙÛÙ
Ù
اÙÙØ¯ replacer.
تابع بر رÙÛ ÙØ± Ø¬ÙØª (key, value) صدا زد٠Ù
ÛâØ´ÙØ¯ Ù Ø¨Ø§ÛØ¯ Ù
ÙØ¯Ø§Ø± «جاÛگزÛ٠شدÙ» را Ø¨Ø±Ú¯Ø±Ø¯Ø§ÙØ¯ Ú©Ù Ø¨Ù Ø¬Ø§Û Ù
ÙØ¯Ø§Ø± اصÙÛ Ø§Ø³ØªÙØ§Ø¯Ù Ù
ÛâØ´ÙØ¯. ÛØ§ اگر Ù
ÙØ¯Ø§Ø± ÙØ±Ø§Ø± است ÙØ§Ø¯ÛØ¯Ù Ú¯Ø±ÙØªÙ Ø´ÙØ¯Ø undefined را Ø¨Ø±Ú¯Ø±Ø¯Ø§ÙØ¯.
در اÛÙ Ù
ÙØ±Ø¯ Ù
Ø§Ø Ù
ÛâØªÙØ§ÙÛÙ
value را Ø¨Ø±Ø§Û ÙÙ
Ù ÚÛØ² ب٠جز occupiedby «ÙÙ
Ø§ÙØ·Ùر Ú©Ù ÙØ³ØªÂ» برگرداÙÛÙ
. Ø¨Ø±Ø§Û ÙØ§Ø¯ÛØ¯Ù Ú¯Ø±ÙØªÙ occupiedByØ Ú©Ø¯ پاÛÛÙ undefined را برÙ
ÛâÚ¯Ø±Ø¯Ø§ÙØ¯:
let room = {
number: 23
};
let meetup = {
title: "Conference",
participants: [{name: "John"}, {name: "Alice"}],
place: room // Ù
راجع٠Ù
ÛâÚ©ÙØ¯ room ب٠meetup
};
room.occupiedBy = meetup; // Ù
راجع٠Ù
ÛâÚ©ÙØ¯ meetup ب٠room
alert( JSON.stringify(meetup, function replacer(key, value) {
alert(`${key}: ${value}`);
return (key == 'occupiedBy') ? undefined : value;
}));
/* Ø¬ÙØªâÙØ§Û Ú©ÙÛØ¯:Ù
ÙØ¯Ø§Ø± ک٠جاÛگزÛÙ Ù
ÛâØ´ÙÙØ¯
: [object Object]
title: Conference
participants: [object Object],[object Object]
0: [object Object]
name: John
1: [object Object]
name: Alice
place: [object Object]
number: 23
occupiedBy: [object Object]
*/
ÙØ·Ùا در ÙØ¸Ø± Ø¯Ø§Ø´ØªÙ Ø¨Ø§Ø´ÛØ¯ ک٠تابع replacer تÙ
اÙ
Ø¬ÙØªâÙØ§Û Ú©ÙÛØ¯/Ù
ÙØ¯Ø§Ø± شاÙ
Ù Ø´ÛØ¡ÙØ§Û ØªÙØ¯Ø±ØªÙ ٠اÙÙ
اÙâÙØ§Û آراÛ٠را Ø¯Ø±ÛØ§Ùت Ù
ÛâÚ©ÙØ¯. اÛ٠تابع Ø¨Ù ØµÙØ±Øª Ø¨Ø§Ø²Ú¯Ø´ØªÛ Ø§Ø¹Ù
ا٠Ù
ÛâØ´ÙØ¯. Ù
ÙØ¯Ø§Ø± this درÙÙ replacer Ø´ÛØ¡Ø§Û است Ú©Ù ÙÛÚÚ¯Û Ú©ÙÙÙÛ Ø±Ø§ در Ø®ÙØ¯ دارد.
اÙÙÛÙ ÙØ±Ø§Ø®ÙاÙÛ Ø®Ø§Øµ است. اÛÙ ÙØ±Ø§Ø®ÙاÙÛ Ø¨Ø§ Ø§Ø³ØªÙØ§Ø¯Ù از ÛÚ© Â«Ø´ÛØ¡ Ø¯Ø±Ø¨Ø±Ú¯ÛØ±ÙدÙ»: {"":meetup} ساخت٠Ù
ÛâØ´ÙØ¯. Ø¨Ù Ø¨ÛØ§ÙÛ Ø¯ÛÚ¯Ø±Ø Ø§ÙÙÛÙ Ø¬ÙØª (key, value) ÛÚ© Ú©ÙÛØ¯ خاÙÛ Ø¯Ø§Ø±Ø¯ Ù Ù
ÙØ¯Ø§Ø± برابر با Ú©Ù Ø´ÛØ¡ Ù
ÙØ±Ø¯ ÙØ¸Ø± است. ب٠ÙÙ
Û٠دÙÛ٠است ک٠در Ù
Ø«Ø§Ù Ø¨Ø§ÙØ§Ø اÙÙÛ٠خط ":[object Object]" است.
Ø§ÛØ¯Ù اÛÙ Ù
ÙØ¶Ùع اÛ٠است ک٠تا جاÛÛ Ú©Ù Ù
ÛâØ´ÙØ¯ ب٠replacer ÙØ¯Ø±Øª Ø¯Ø§Ø¯Ù Ø´ÙØ¯: اÛ٠تابع Ø´Ø§ÙØ³ اÛ٠را دارد ک٠اگر ÙØ§Ø²Ù
Ø¨ÙØ¯ ØØªÛ تÙ
اÙ
Ø´ÛØ¡ را تجزÛ٠٠تØÙÛÙ ÛØ§ جاÛگزÛÙ Ú©ÙØ¯/ÙØ§Ø¯ÛØ¯Ù Ø¨Ú¯ÛØ±Ø¯.
ÙØ§ÙØ¨âØ¨ÙØ¯Û: space
آرگÙÙ
ا٠سÙÙ
JSON.stringify(value, replacer, space) تعداد ÙØ§ØµÙ٠خاÙÛ Ø¨Ø±Ø§Û Ø§Ø³ØªÙØ§Ø¯Ù در ÙØ§ÙØ¨âØ¨ÙØ¯Û Ø´Ú©Û٠است.
ÙØ¨Ùا تÙ
اÙ
Ø´ÛØ¡ÙاÛÛ Ú©Ù Ø¨Ù Ø±Ø´ØªÙ ØªØ¨Ø¯ÛÙ Ø´Ø¯Ù Ø¨ÙØ¯Ùد ÙÛÚ ØªÙØ±ÙØªÚ¯Û Ù ÙØ§ØµÙ٠اضاÙÛ ÙØ¯Ø§Ø´ØªÙد. اگر Ø¨Ø®ÙØ§ÙÛÙ
ÛÚ© Ø´ÛØ¡ را ب٠ÛÚ© Ø´Ø¨Ú©Ù Ø¨ÙØ±Ø³ØªÛÙ
اÛÙ Ù
ÙØ¶Ùع Ù
Ø´Ú©ÙÛ ÙØ¯Ø§Ø±Ø¯. آرگÙÙ
ا٠space Ø®ØµÙØµØ§ Ø¨Ø±Ø§Û ÛÚ© Ø®Ø±ÙØ¬Û Ø²ÛØ¨Ø§ Ø§Ø³ØªÙØ§Ø¯Ù Ù
ÛâØ´ÙØ¯.
اÛÙØ¬Ø§ space = 2 Ø¨Ù Ø¬Ø§ÙØ§Ø§Ø³Ú©Ø±Ûپت Ù
ÛâÚ¯ÙÛØ¯ Ú©Ù Ø´ÛØ¡ÙØ§Û ØªÙØ¯Ø±ØªÙ را در ÚÙØ¯ خط ٠با 2 ÙØ§ØµÙ٠خاÙÛ ØªÙØ±ÙØªÚ¯Û Ø¯Ø±ÙÙ ÛÚ© Ø´ÛØ¡ ÙØ´Ø§Ù بدÙ:
let user = {
name: "John",
age: 25,
roles: {
isAdmin: false,
isEditor: true
}
};
alert(JSON.stringify(user, null, 2));
/* :با 2 ÙØ§ØµÙ٠خاÙÛ ØªÙØ±ÙتگÛ
{
"name": "John",
"age": 25,
"roles": {
"isAdmin": false,
"isEditor": true
}
}
*/
/* :ÙØªÛØ¬ÙØ ØªÙØ±ÙØªÚ¯Û Ø¨ÛØ´ØªØ±Û Ø®ÙØ§Ùد داشت JSON.stringify(user, null, 4) براÛ
{
"name": "John",
"age": 25,
"roles": {
"isAdmin": false,
"isEditor": true
}
}
*/
آرگÙ٠ا٠سÙ٠رشت٠ÙÙ Ù ÛâØªÙØ§Ùد باشد. در اÛÙ ØµÙØ±ØªØ Ø¨Ù Ø¬Ø§Û ØªØ¹Ø¯Ø§Ø¯ ÙØ§ØµÙ٠خاÙÛØ Ø¢Ù Ø±Ø´ØªÙ Ø¨Ø±Ø§Û Ø§Ø¹Ù Ø§Ù ØªÙØ±ÙØªÚ¯Û Ø§Ø³ØªÙØ§Ø¯Ù Ù ÛâØ´ÙØ¯.
پاراÙ
تر space ØµØ±ÙØ§ Ø¨Ø±Ø§Û Ø§ÙØ¯Ø§ÙÛ Ù
اÙÙØ¯ Ø®Ø±ÙØ¬Û Ø²ÛØ¨Ø§ Ø§Ø³ØªÙØ§Ø¯Ù Ù
ÛâØ´ÙØ¯.
٠تد âtoJSONâ Ø´Ø®ØµÛâØ³Ø§Ø²Û Ø´Ø¯Ù
Ù
اÙÙØ¯ toString Ø¨Ø±Ø§Û ØªØ¨Ø¯ÛÙ Ø¨Ù Ø±Ø´ØªÙØ ÛÚ© Ø´ÛØ¡ Ù
ÛâØªÙØ§Ùد Ù
تد toJSON را Ø¨Ø±Ø§Û ØªØ¨Ø¯Û٠ب٠جÛâØ³Ø§Ù Ø¯Ø§Ø´ØªÙ Ø¨Ø§Ø´Ø¯. اگر اÛÙ Ù
تد Ù
ÙØ¬Ùد Ø¨Ø§Ø´Ø¯Ø JSON.stringify Ø¨Ù Ø·ÙØ± Ø®ÙØ¯Ú©Ø§Ø± آ٠را صدا Ù
ÛâØ²ÙØ¯.
Ø¨Ø±Ø§Û Ù Ø«Ø§Ù:
let room = {
number: 23
};
let meetup = {
title: "Conference",
date: new Date(Date.UTC(2017, 0, 1)),
room
};
alert( JSON.stringify(meetup) );
/*
{
"title":"Conference",
"date":"2017-01-01T00:00:00.000Z", // (1)
"room": {"number":23} // (2)
}
*/
اÛÙØ¬Ø§ Ù
ÛâØ¨ÛÙÛÙ
Ú©Ù date (1) ب٠رشت٠تبدÛ٠شد. ب٠اÛ٠دÙÛ٠ک٠تÙ
اÙ
ØªØ§Ø±ÛØ®âÙØ§ ÛÚ© Ù
تد درÙÙÛ toJSON Ø¯Ø§Ø±ÙØ¯ Ú©Ù ÚÙÛ٠رشتÙâØ§Û Ø±Ø§ برÙ
ÛâÚ¯Ø±Ø¯Ø§ÙØ¯.
ØØ§Ùا Ø¨ÛØ§ÛÛØ¯ ÛÚ© toJSON شخصÛâØ³Ø§Ø² Ø¨Ù Ø´ÛØ¡ room اضاÙÙ Ú©ÙÛÙ
:
let room = {
number: 23,
toJSON() {
return this.number;
}
};
let meetup = {
title: "Conference",
room
};
alert( JSON.stringify(room) ); // 23
alert( JSON.stringify(meetup) );
/*
{
"title":"Conference",
"room": 23
}
*/
ÙÙ
Ø§ÙØ·Ùر Ú©Ù Ù
ÛâØ¨ÛÙÛÙ
Ø toJSON ÙÙ
Ø¨Ø±Ø§Û ÙØ±Ø§Ø®ÙاÙÛ Ù
ستÙÛÙ
JSON.stringify(room) Ø§Ø³ØªÙØ§Ø¯Ù Ù
ÛâØ´ÙØ¯ Ù ÙÙ
زÙ
اÙÛ Ú©Ù room در ÛÚ© Ø´ÛØ¡ Ú©Ø¯Ú¯Ø°Ø§Ø±Û Ø´Ø¯Ù Ø¯Ûگر Ø¨Ù ØµÙØ±Øª ØªÙØ¯Ø±ØªÙ ÙØ¬Ùد دارد.
٠تد JSON.parse
Ø¨Ø±Ø§Û Ø¨Ø±Ú¯Ø±Ø¯Ø§ÙØ¯Ù Ú©Ø¯Ú¯Ø°Ø§Ø±Û ÛÚ© رشتÙâÛ Ø¬ÛâØ³Ø§ÙØ ٠ا ب٠٠تد دÛÚ¯Ø±Û Ø¨Ù ÙØ§Ù JSON.parse ÙÛØ§Ø² دارÛÙ .
سÛÙØªÚ©Ø³ Ø¢Ù:
let value = JSON.parse(str, [reviver]);
- پارا٠تر str
- رشتÙâÛ Ø¬ÛâØ³Ø§Ù Ø¨Ø±Ø§Û ØªØ¬Ø²ÛÙ.
- پارا٠تر reviver
- تابع Ø§Ø®ØªÛØ§Ø±Û function(key,value) Ú©Ù Ø¨Ø±Ø§Û ÙØ± Ø¬ÙØª
(key, value)ÙØ±Ø§Ø®ÙاÙÛ Ù ÛâØ´ÙØ¯ Ù Ù ÛâØªÙØ§Ùد Ù ÙØ¯Ø§Ø± را تغÛÛØ± Ø´Ú©Ù Ø¯ÙØ¯.
Ø¨Ø±Ø§Û Ù Ø«Ø§Ù:
// آراÛÙâØ§Û Ú©Ù Ø±Ø´ØªÙ Ø´Ø¯Ù
let numbers = "[0, 1, 2, 3]";
numbers = JSON.parse(numbers);
alert( numbers[1] ); // 1
ÛØ§ Ø¨Ø±Ø§Û Ø´ÛØ¡ÙØ§Û ØªÙØ¯Ø±ØªÙ:
let userData = '{ "name": "John", "age": 35, "isAdmin": false, "friends": [0,1,2,3] }';
let user = JSON.parse(userData);
alert( user.friends[1] ); // 1
جÛâØ³Ø§Ù Ù Ù Ú©Ù Ø§Ø³Øª در ØµÙØ±Øª ÙØ²ÙÙ Ù¾ÛÚÛØ¯Ù باشد Ù Ø´ÛØ¡Ùا ٠آراÛÙâÙØ§ Ø´Ø§Ù Ù Ø´ÛØ¡Ùا ٠آراÛÙâÙØ§Û دÛÚ¯Ø±Û ÙÙ Ø¨Ø§Ø´ÙØ¯. ا٠ا Ø¢ÙÙØ§ Ø¨Ø§ÛØ¯ از ÛÚ© ÙØ±Ù ت جÛâØ³Ø§Ù Ù Ø´Ø§Ø¨Ù ØªØ§Ø¨Ø¹ÛØª Ú©ÙÙØ¯.
اÛÙØ¬Ø§ ÚÙØ¯ Ø§Ø´ØªØ¨Ø§Ù Ø±Ø§ÛØ¬ در جÛâØ³Ø§Ù Ø¯Ø³Øª ÙÙÛØ³ را Ø¢ÙØ±Ø¯ÛÙ (گاÙÛ Ø§ÙÙØ§Øª Ø¨Ø§ÛØ¯ Ø¨Ø±Ø§Û Ø±ÙØ¹ خطا (Debugging) آ٠را بÙÙÛØ³ÛÙ ):
let json = `{
name: "John", // اشتباÙ: اسÙ
ÙÛÚÚ¯Û Ø¨Ø¯ÙÙ Ú©ÙØªÛØ´Ù
"surname": 'Smith', // اشتباÙ: Ù
ÙØ¯Ø§Ø±Ø Ú©ÙØªÛØ´Ù ØªÚ©Û Ø¯Ø§Ø±Ø¯ (Ø¨Ø§ÛØ¯ Ø¯ÙØªØ§ÛÛ Ø¨Ø§Ø´Ø¯)
'isAdmin': false // اشتباÙ: Ú©ÙÛØ¯Ø Ú©ÙØªÛØ´Ù ØªÚ©Û Ø¯Ø§Ø±Ø¯ (باشد Ø¯ÙØªØ§ÛÛ Ø¨Ø§Ø´Ø¯)
"birthday": new Date(2000, 2, 3), // Ù
جاز ÙÛØ³ØªØ ÙÙØ· Ù
ÙØ¯Ø§Ø±ÙØ§Û Ø®Ø§Ù
Ù
Ø¬Ø§Ø²ÙØ¯ "new" اشتباÙ: عÙ
Ùگر
"friends": [0,1,2,3] // اÛÙØ¬Ø§ ÙÙ
Ù ÚÛØ² درست است
}`;
Ø¨Ù Ø¹ÙØ§ÙÙØ جÛâØ³Ø§Ù Ø§Ø² Ú©Ø§Ù ÙØª Ù¾Ø´ØªÛØ¨Ø§ÙÛ ÙÙ ÛâÚ©ÙØ¯. اضاÙÙ Ú©Ø±Ø¯Ù Ú©Ø§Ù ÙØª ب٠جÛâØ³Ø§Ù Ø¢Ù Ø±Ø§ ÙØ§Ù عتبر Ù ÛâÚ©ÙØ¯.
ÛÚ© ÙØ±Ù ت دÛگر Ø¨Ù ÙØ§Ù JSON5 ÙØ¬Ùد دارد Ú©Ù Ú©ÙÛØ¯Ùا بدÙÙ Ú©ÙØªÛØ´ÙØ Ú©Ø§Ù ÙØª Ù⦠را ٠عتبر Ù ÛâØ¯Ø§ÙØ¯. ا٠ا اÛ٠جÛâØ³Ø§Ù ÛÚ© کتابخاÙ٠٠ستÙ٠است ٠در ٠شخصات Ø²Ø¨Ø§Ù ÙØ¬Ùد ÙØ¯Ø§Ø±Ø¯.
دÙÛ٠اÛÙک٠جÛâØ³Ø§Ù Ù Ø¹Ù ÙÙÛ Ø§ÙÙØ¯Ø± سختâÚ¯ÛØ±Ø§Ù٠است اÛÙ ÙÛØ³Øª Ú©Ù ØªÙØ³Ø¹Ù دÙÙØ¯Ú¯Ø§Ù Ø¢Ù ØªÙØ¨Ù ÙØ³ØªÙØ¯Ø Ø¨Ùک٠دÙÛÙØ´ اÛ٠است Ú©Ù ÛÚ© Ù¾ÛØ§Ø¯ÙâØ³Ø§Ø²Û Ø¢Ø³Ø§ÙØ Ù ÙØ±Ø¯ اط٠ÛÙØ§Ù Ù Ø³Ø±ÛØ¹ از اÙÚ¯ÙØ±Ûت٠تجزÛ٠را ÙØ±Ø§ÙÙ Ú©ÙØ¯.
Ø§Ø³ØªÙØ§Ø¯Ù از اØÛاکÙÙØ¯Ù (reviver)
ÙØ±Ø¶ Ú©ÙÛØ¯ Ù
ا ÛÚ© Ø´ÛØ¡ meetup ک٠ب٠رشت٠تبدÛ٠شد٠را از Ø³Ø±ÙØ± Ú¯Ø±ÙØªÛÙ
.
اÛÙ Ø´ÛØ¡ اÛÙÚ¯ÙÙÙ Ø¨ÙØ¸Ø± Ù ÛâØ±Ø³Ø¯:
// title: (meetup title), date: (meetup date)
let str = '{"title":"Conference","date":"2017-11-30T12:00:00.000Z"}';
â¦Ù ØØ§Ùا ٠ا ÙÛØ§Ø² دارÛ٠ک٠آ٠را از Ø³Ø±ÛØ§ÙÛ Ø¨ÙØ¯Ù خارج Ú©ÙÛ٠تا Ø¯ÙØ¨Ø§Ø±Ù ب٠ÛÚ© Ø´ÛØ¡ Ø¬Ø§ÙØ§Ø§Ø³Ú©Ø±Ûپت تبدÛÙ Ø´ÙØ¯.
Ø¨ÛØ§ÛÛØ¯ با ÙØ±Ø§Ø®ÙاÙÛ JSON.parse اÛ٠کار را Ø§ÙØ¬Ø§Ù
دÙÛÙ
:
let str = '{"title":"Conference","date":"2017-11-30T12:00:00.000Z"}';
let meetup = JSON.parse(str);
alert( meetup.date.getDate() ); // !Ø§Ø±ÙØ±
Ø§Û ÙØ§Û! ÛÚ© Ø§Ø±ÙØ±!
Ù
ÙØ¯Ø§Ø± meetup.date ÛÚ© Ø±Ø´ØªÙ Ø§Ø³ØªØ ÙÙ ÛÚ© Ø´ÛØ¡ Date. Ù
تد JSON.parse از کجا Ø¨Ø¯Ø§ÙØ¯ Ú©Ù Ø¨Ø§ÛØ¯ آ٠رشت٠را ب٠ÛÚ© Date تبدÛÙ Ú©ÙØ¯Ø
Ø¨ÛØ§ÛÛØ¯ ب٠JSON.parse تابع اØÛاکÙÙØ¯Ù (reviver) را ب٠عÙÙØ§Ù آرگÙÙ
ا٠دÙÙ
بدÙÛÙ
ک٠تÙ
اÙ
Ù
ÙØ¯Ø§Ø±ÙØ§Û Ø±Ø§ «ÙÙ
Ø§ÙØ·Ùر Ú©Ù ÙØ³ØªÙد» Ø¨Ø±Ú¯Ø±Ø¯Ø§ÙØ¯ اÙ
ا date ب٠ÛÚ© Ø´ÛØ¡ Date تبدÛÙ Ø®ÙØ§Ùد شد:
let str = '{"title":"Conference","date":"2017-11-30T12:00:00.000Z"}';
let meetup = JSON.parse(str, function(key, value) {
if (key == 'date') return new Date(value);
return value;
});
alert( meetup.date.getDate() ); // !ØØ§Ùا کار Ù
ÛâÚ©ÙØ¯
در Ø¶Ù Ù Ø¨Ø±Ø§Û Ø´ÛØ¡ÙØ§Û ØªÙØ¯Ø±ØªÙ Ù٠کار Ù ÛâÚ©ÙØ¯:
let schedule = `{
"meetups": [
{"title":"Conference","date":"2017-11-30T12:00:00.000Z"},
{"title":"Birthday","date":"2017-04-18T12:00:00.000Z"}
]
}`;
schedule = JSON.parse(schedule, function(key, value) {
if (key == 'date') return new Date(value);
return value;
});
alert( schedule.meetups[1].date.getDate() ); // !کار Ù
ÛâÚ©ÙØ¯
Ø®ÙØ§ØµÙ
- جÛâØ³Ø§Ù ÛÚ© ÙØ±Ù ت داد٠است Ú©Ù Ø¨Ø±Ø§Û Ø¨ÛØ´ØªØ± زباÙâÙØ§Û Ø¨Ø±ÙØ§Ù ÙâÙÙÛØ³ÛØ Ø§Ø³ØªØ§ÙØ¯Ø§Ø±Ø¯ ٠کتابخاÙÙâÙØ§Û ٠ستÙÙ Ø®ÙØ¯ را دارد.
- جÛâØ³Ø§Ù Ø§Ø² Ø´ÛØ¡ÙØ§Û Ø³Ø§Ø¯ÙØ آراÛÙâÙØ§Ø رشتÙâÙØ§Ø Ø§Ø¹Ø¯Ø§Ø¯Ø Ø¨ÙÙÛÙâÙØ§ Ù
nullÙ¾Ø´ØªÛØ¨Ø§ÙÛ Ù ÛâÚ©ÙØ¯. - Ø¬Ø§ÙØ§Ø§Ø³Ú©Ø±Ûپت Ù ØªØ¯ÙØ§Û JSON.stringify Ø¨Ø±Ø§Û Ø³Ø±ÛØ§ÙÛ Ú©Ø±Ø¯Ù Ø¨Ù Ø¬ÛâØ³Ø§Ù Ù JSON.parse Ø¨Ø±Ø§Û Ø®ÙØ§Ùد٠از جÛâØ³Ø§Ù Ø±Ø§ ÙØ±Ø§ÙÙ Ù ÛâÚ©ÙØ¯.
- ÙØ± د٠٠تد از تابعâÙØ§Û تغÛÛØ± شک٠دÙÙØ¯Ù Ø¨Ø±Ø§Û Ø®ÙØ§ÙدÙ/ÙÙØ´ØªÙ ÙÙØ´Ù ÙØ¯Ø§ÙÙ Ù¾Ø´ØªÛØ¨Ø§ÙÛ Ù ÛâÚ©ÙÙØ¯.
- اگر ÛÚ© Ø´ÛØ¡ Ù
تد
toJSONØ¯Ø§Ø´ØªÙ Ø¨Ø§Ø´Ø¯Ø Ø³Ù¾Ø³ اÛ٠٠تد ØªÙØ³Ø·JSON.stringifyÙØ±Ø§Ø®ÙاÙÛ Ù ÛâØ´ÙØ¯.
ÙØ¸Ø±Ø§Øª
<code>Ø§Ø³ØªÙØ§Ø¯Ù Ú©ÙÛØ¯Ø Ø¨Ø±Ø§Û ÚÙØ¯Û٠خط â کد را درÙ٠تگ<pre>ÙØ±Ø§Ø± دÙÛØ¯Ø Ø¨Ø±Ø§Û Ø¨ÛØ´ از د٠خط کد â Ø§Ø² ÛÚ© جعبÙÙ Ø´ÙÛ Ø§Ø³ØªÙØ§Ø¯Ù Ú©ÙÛØ¯. (plnkrØ jsbinØ codepenâ¦)