القواعد
1. الهيكل الأساسي
-
يبدأ وينتهي محتوى الملف بكائن محاط بأقواس معقفة
{}
. -
يتكون الكائن من أزواج من المفتاح والقيمة، حيث أن المفتاح هو اسم السمة والقيمة هي قيمة السمة.
-
يتم فصل المفتاح والقيمة باستخدام النقطتين (
:
) أو علامة المساواة (=
).
2. التعليقات
-
تبدأ التعليقات بـ
//
أو#
وتكتب في سطر واحد. -
تنطبق التعليقات حتى نهاية السطر.
-
لا تدعم التعليقات متعددة الأسطر. إذا كنت بحاجة إلى كتابة تعليقات عبر عدة أسطر، يجب عليك إضافة
//
أو#
في بداية كل سطر.
3. الكائن (Object)
-
الكائن محاط بأقواس معقفة
{}
ويحتوي على أزواج من المفتاح والقيمة. -
يمكنك استخدام
:
أو=
بين المفتاح والقيمة. كلا الرمزين قابلين للتبديل. -
كل خاصية مفصولة بفاصلة (
,
). -
يمكن تضمين كائنات أخرى داخل كائن.
مثال:
{
status: "success",
code = 200,
user = { id: 123, name: "John Doe" }
}
4. المصفوفة (Array)
-
المصفوفة محاطة بأقواس مربعة
[]
والعناصر مفصولة بفواصل (,
). -
يمكن أن تكون عناصر المصفوفة كائنات أو سلاسل أو أرقام أو أنواع بيانات أخرى.
-
في WSON، يمكن تضمين المصفوفات داخل الكائنات، ويمكن للمصفوفات أن تحتوي على مصفوفات أو كائنات أخرى.
مثال:
tasks: [
{ task_id: 1, title: "Complete project report" },
{ task_id: 2, title: "Review team feedback" }
]
5. أزواج المفتاح والقيمة (Key-Value Pair)
-
أسماء السمات هي سلاسل نصية وتوضع مباشرة بعد : أو =, دون مسافة.
-
قد تكون القيمة من أنواع مثل السلاسل النصية أو الأرقام أو القيم البوليانية أو الكائنات أو المصفوفات.
-
يتم إحاطة السلاسل النصية بعلامات اقتباس مزدوجة (
"
). -
يتم كتابة الأرقام دون علامات اقتباس ويمكن أن تكون أعداد صحيحة أو عشرية.
مثال:
name: "John Doe"
age = 25
6. أنواع البيانات (Data Types)
- سلسلة (String): نص محاط بعلامات اقتباس مزدوجة (
"
).
"hello world"
- رقم (Number): قيمة عدد صحيح أو عدد عشري.
42
3.14
- بولياني (Boolean): القيمة هي
true
أوfalse
.
is_active = true
- كائن (Object): مجموعة من أزواج المفتاح والقيمة محاطة بـ
{}
. - مصفوفة (Array): قائمة من العناصر محاطة بـ
[]
.
7. شرح المثال
{
// معلومات عن رمز الحالة والرسالة
status: "success",
code: 200,
message: "Data retrieved successfully",
user = {
id = 123,
name: "John Doe",
email: "[email protected]",
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"
}
]
}