JSON.parse()‎

من موسوعة حسوب
مراجعة 15:43، 28 يناير 2018 بواسطة عبد اللطيف ايمش (نقاش | مساهمات) (استبدال النص - '\[\[تصنيف:(.*)\]\]' ب'{{SUBPAGENAME}}')
(فرق) → مراجعة أقدم | المراجعة الحالية (فرق) | مراجعة أحدث ← (فرق)

الدالة 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

مصادر ومواصفات