JSON .parse ()
الاستخدام الشائع لـ JSON هو تبادل البيانات من / إلى خادم الويب.
عند تلقي البيانات من خادم الويب ، تكون البيانات دائمًا عبارة عن سلسلة.
حلل البيانات مع JSON.parse()
، وتصبح البيانات كائن JavaScript.
مثال - تحليل JSON
تخيل أننا تلقينا هذا النص من خادم ويب:
'{"name":"John", "age":30, "city":"New York"}'
استخدم وظيفة JavaScript JSON.parse()
لتحويل النص إلى كائن JavaScript:
const obj = JSON.parse('{"name":"John", "age":30, "city":"New
York"}');
تأكد من أن النص بتنسيق JSON ، وإلا ستحصل على خطأ في بناء الجملة.
استخدم كائن JavaScript في صفحتك:
مثال
<p id="demo"></p>
<script>
document.getElementById("demo").innerHTML = obj.name;
</script>
صفيف مثل JSON
عند استخدام JSON.parse()
JSON المشتق من مصفوفة ، ستعيد الطريقة مصفوفة JavaScript ، بدلاً من كائن JavaScript.
مثال
const text = '["Ford", "BMW", "Audi", "Fiat"]';
const myArr = JSON.parse(text);
استثناءات
اعراب التواريخ
كائنات التاريخ غير مسموح بها في JSON.
إذا كنت بحاجة إلى تضمين تاريخ ، فاكتبه كسلسلة.
يمكنك تحويله مرة أخرى إلى كائن تاريخ لاحقًا:
مثال
تحويل سلسلة إلى تاريخ:
const text =
'{"name":"John", "birth":"1986-12-14", "city":"New York"}';
const obj = JSON.parse(text);
obj.birth = new Date(obj.birth);
document.getElementById("demo").innerHTML = obj.name + ", " + obj.birth;
أو يمكنك استخدام المعامل الثاني JSON.parse()
للدالة المسماة reviver .
المعلمة reviver هي وظيفة تتحقق من كل خاصية قبل إرجاع القيمة.
مثال
تحويل سلسلة إلى تاريخ ، باستخدام وظيفة reviver :
const text =
'{"name":"John", "birth":"1986-12-14", "city":"New York"}';
const obj = JSON.parse(text, function (key, value) {
if
(key == "birth") {
return new
Date(value);
} else {
return value;
}
});
document.getElementById("demo").innerHTML = obj.name + ", " + obj.birth;
وظائف الاعراب
الوظائف غير مسموح بها في JSON.
إذا كنت بحاجة إلى تضمين دالة ، فاكتبها كسلسلة.
يمكنك تحويلها مرة أخرى إلى دالة لاحقًا:
مثال
تحويل سلسلة إلى دالة:
const text =
'{"name":"John", "age":"function () {return
30;}", "city":"New York"}';
const obj = JSON.parse(text);
obj.age = eval("(" + obj.age + ")");
document.getElementById("demo").innerHTML = obj.name + ", " +
obj.age();
يجب أن تتجنب استخدام الوظائف في JSON ، فستفقد الوظائف نطاقها ، وسيتعين عليك استخدامها eval()
لإعادة تحويلها إلى وظائف.