JSON.parse()
الدالة JSON.parse()
تُفسِّر سلسلة JSON النصية، وتبني القيمة أو الكائن في JavaScript الموصوف من السلسلة النصية. ويمكن توفير دالة اختيارية لإجراء عملية تحويل على الكائن قبل إعادته.
البنية العامة
JSON.parse(text[, reviver])
text
السلسلة النصية التي ستُفسَّر على أنها بصيغة JSON. راجع صفحة الكائن JSON
لمزيٍد من المعلومات حول هذه الصيغة.
reviver
الدالة التي تصف كيفية تحويل القيمة المُخزَّنة بصيغة JSON إلى القيمة الأصلية قبل إعادتها.
القيمة المعادة
كائن Object
يُمثِّل قيمة JSON.
الاستثناءات
سيرمى الاستثناء SyntaxError
إذا لم تكن السلسلة النصية بصيغة JSON صالحة.
أمثلة
استخدام JSON.parse()
JSON.parse('{}'); // {}
JSON.parse('true'); // true
JSON.parse('"foo"'); // "foo"
JSON.parse('[1, 5, "false"]'); // [1, 5, "false"]
JSON.parse('null'); // null
استخدام المعامل reviver
إذا حُدِّدت قيمة للمعامل reviver
فستحوّل القيمة المحسوبة من عملية التفسير قبل إعادته؛ أي أنَّ القيمة المحسوبة وجميع خاصياته ستمر على الدالة reviver
، وإذا أعادت الدالة reviver
القيمة undefined
(أو لم تُعد أيّة قيمة) فستُحذَف الخاصية من الكائن، وستُغيّر قيمة الخاصية فيما عدا ذلك من الحالات.
لاحظ أنَّ المثال الآتي يستخدم الدوال السهمية:
JSON.parse('{"p": 5}', (key, value) =>
typeof value === 'number'
? value * 2 // value * 2 للأرقام
: value // إعادة القيمة كما هي لبقية الأنواع
);
// { p: 10 }
JSON.parse('{"1": 1, "2": 2, "3": {"4": 4, "5": {"6": 6}}}', (key, value) => {
console.log(key); // عرض اسم الخاصية
return value; // إعادة القيمة دون تعديل
});
// 1
// 2
// 4
// 6
// 5
// 3
// ""
لا تسمح JSON.parse()
بإضافة فاصلة في النهاية
لا يجوز وضع فاصلة بعد آخر خاصية أو عنصر من عناصر المصفوفة، وفعل ذلك سيؤدي إلى رمي الاستثناء SyntaxError
:
JSON.parse('[1, 2, 3, 4, ]');
JSON.parse('{"foo" : 1, }');
دعم المتصفحات
الميزة | Chrome | Firefox | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|
الدعم الأساسي | نعم | 3.5 | 8 | 10.5 | 4 |
مصادر ومواصفات
- مسودة المعيار ECMAScript Latest Draft.
- معيار ECMAScript 2015 (6th Edition).
- معيار ECMAScript 5.1.