قواعد
١. هيكل أساسي
-
يبدأ وينتهي محتوى الملف ككائن (
{}) موضوع بين الأقواسobject. -
يتكون الكائن من أزواج سمات الاسم (المفتاح) والقيمة.
-
يتم فصل اسم السمة والقيمة باستخدام نقطتين (
:) أو علامة التساوي (=).
٢. تعليق
-
تبدأ التعليقات بـ
//أو#وتكتب على مستوى السطر الواحد. -
يمتد التعليق حتى نهاية السطر الذي يظهر فيه.
-
لا تدعم التعليقات متعددة الأسطر بشكل مباشر، لذلك إذا كنت تريد كتابة تعليق يمتد لعدة أسطر، يجب إضافة
//أو#في بداية كل سطر.
٣. كائن (Object)
-
يُحاط الكائن بأقواس
{}ويحتوي على أزواج مفتاح-قيمة. -
يمكن استخدام الرمز
:أو=بين المفتاح والقيمة. يمكن استخدام الرمزين بشكل متبادل. -
يتم فصل كل سمة بفاصلة (
,). -
يمكن تضمين كائنات أخرى داخل الكائن.
مثال:
{
status: "success",
code = 200,
user = { id: 123, name: "John Doe" }
}
٤. مصفوفة (Array)
-
المصفوفة محاطة بأقواس
[]وتُفصل العناصر بفواصل (,). -
يمكن أن تكون عناصر المصفوفة متنوعة الأنواع، مثل الكائنات، السلاسل النصية، أو الأرقام.
-
في WSON، يمكن تضمين المصفوفات داخل الكائنات، كما يمكن تداخل مصفوفات أو كائنات أخرى داخل المصفوفة.
مثال:
tasks: [
{ task_id: 1, title: "Complete project report" },
{ task_id: 2, title: "Review team feedback" }
]
٥. زوج المفتاح-القيمة (Key-Value Pair)
-
يتكون اسم السمة من سلسلة نصية ويتم وضع القيمة مباشرة بعد
:أو=بدون مسافات. -
تشمل أنواع القيم: سلاسل نصية، أرقام، بوليانات، كائنات، ومصفوفات.
-
تحاط السلاسل النصية بعلامات اقتباس مزدوجة
“. -
تستخدم الأرقام بدون علامات اقتباس، ويمكن أن تكون في شكل أعداد صحيحة أو أعداد عشرية.
مثال:
name: "John Doe"
age = 25
٦. أنواع البيانات (Data Types)
- سلسلة نصية (String): نص محاط بعلامات اقتباس مزدوجة
".
"hello world"
- عدد (Number): قيمة عددية صحيحة أو عشرية.
42
3.14
- بوليان (Boolean): يستخدم القيم
trueأوfalse.
is_active = true
- كائن (Object): زوج مفتاح-قيمة محاط بأقواس
{}. - مصفوفة (Array): قائمة عناصر محاطة بأقواس
[].
٧. وصف المثال
{
// رمز الحالة ومعلومات الرسالة
status: "success",
code: 200,
message: "Data retrieved successfully",
user = {
id = 123,
name: "John Doe",
email: "john@example.com",
age: 25 # عمر المستخدم
},
tasks: [
{
task_id: 1,
title: "Complete project report",
status: "in-progress",
due_date: "2024-10-15"
},
{
task_id: 2,
title: "Review team feedback",
status: "pending",
due_date: "2024-10-20"
}
]
}
