ไวยากรณ์
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"
}
]
}