لماذا JSON
أساسيات تبادل البيانات
لماذا JSON درس مجاني في Lua Academy على CoddyKit. هذا هو الدرس 1 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Lua Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Lua Academy 4 دروس في المجموع.
ما هو JSON؟
JSON (JavaScript Object Notation) هو تنسيق نصي خفيف لتخزين البيانات وتبادلها. وهو سهل القراءة للبشر ومستقل عن لغة البرمجة.
تتعامل معه تقريبًا كل واجهة API على الويب، وملف إعداد، وقاعدة بيانات. ويتيح تعلّم التحويل بين JSON وجداول Lua لبرامجكم النصية التواصل مع العالم الخارجي.
يشبه JSON لغة Lua
تستخدم كائنات JSON الأقواس المعقوفة مع أزواج المفتاح والقيمة، بينما تستخدم المصفوفات الأقواس المربعة. وهذا يتوافق تقريبًا بصورة مثالية مع جداول Lua.
يتحول كائن JSON إلى جدول Lua ذي مفاتيح نصية، بينما تتحول مصفوفة JSON إلى جدول Lua ذي فهارس رقمية تبدأ من 1.
-- JSON text
-- {"name": "Ada", "age": 36}
-- Equivalent Lua table
local person = { name = "Ada", age = 36 }
print(person.name)لا تحتوي Lua على دعم مدمج لـ JSON
بخلاف بعض اللغات، لا تأتي Lua القياسية مزودة بدعم JSON. لذلك يجب استخدام مكتبة.
الخياران الأكثر شيوعًا هما dkjson (مكتبة مكتوبة بلغة Lua فقط وسهلة التثبيت) وlua-cjson (مكتبة C سريعة). وتوفر كلتاهما الدالتين encode وdecode.
تحميل مكتبة JSON
تُحمّلون مكتبة JSON باستخدام require، تمامًا مثل أي وحدة Lua أخرى. ويحتوي الجدول المُعاد على الدوال التي تحتاجون إليها.
نحمّل هنا dkjson ونربطه بمتغير محلي اسمه json.
local json = require("dkjson")
-- now json.encode and json.decode are readyالعمليتان الأساسيتان
لا تفعلون مع JSON سوى أمرين أساسيين: decode وencode.
يحوّل فك الترميز سلسلة JSON إلى جدول Lua يمكنكم قراءته. أما الترميز فيحوّل جدول Lua مرة أخرى إلى سلسلة JSON يمكنكم إرسالها أو حفظها.
local json = require("dkjson")
local t = json.decode('{"ok": true}') -- string -> table
local s = json.encode(t) -- table -> stringمثال على فك الترميز
عند تلقي نص JSON من ملف أو واجهة API، تحلّل json.decode النص وتحوله إلى جدول Lua صالح للاستخدام.
بعد فك الترميز، تصلون إلى الحقول باستخدام صياغة Lua المعتادة.
local json = require("dkjson")
local text = '{"city": "Oslo", "temp": 7}'
local data = json.decode(text)
print(data.city, data.temp)مثال على الترميز
لبناء JSON، املؤوا جدول Lua ومرروه إلى json.encode. والنتيجة سلسلة نصية جاهزة للكتابة أو الإرسال.
local json = require("dkjson")
local book = { title = "Lua", pages = 328 }
local text = json.encode(book)
print(text)أنواع بيانات JSON
يدعم JSON مجموعة صغيرة من الأنواع: السلاسل النصية، والأرقام، والقيم المنطقية، وnull، والكائنات، والمصفوفات.
تطابق Lua هذه الأنواع مع السلاسل النصية، والأرقام، والقيم المنطقية، وnil، والجداول. انتبهوا إلى أن null في JSON لا يملك مكافئًا مثاليًا في Lua، وقد يسبب ذلك مفاجآت.
لماذا نستخدم JSON بدلًا من التنسيقات المخصصة؟
يمكنكم ابتكار تنسيق نصي خاص بكم، لكن JSON مفهوم بالفعل في كل مكان. فالمحررات تميّزه، وأدوات التحقق تفحصه، واللغات الأخرى تحلله فورًا.
يضمن استخدام JSON قابلية نقل بياناتكم، ويجعل تصحيح أخطاء الشيفرة أسهل.
حالات الاستخدام الشائعة
ستستخدمون JSON عند استدعاء واجهات REST API، أو قراءة ملفات الإعداد، أو تخزين النتائج مؤقتًا، أو تمرير البيانات بين العمليات.
النمط واحد في كل حالة: فكّوا ترميز JSON الوارد إلى جدول، واعملوا عليه، ثم رمّزوه مرة أخرى عند الحاجة إلى إرساله.
local json = require("dkjson")
-- typical round trip
local data = json.decode(incoming)
data.seen = true
local out = json.encode(data)معالجة أخطاء فك الترميز
قد يفشل فك الترميز إذا لم يكن النص JSON صالحًا. تُعيد dkjson القيمة وموضع التوقف ورسالة الخطأ بدلًا من التسبب في انهيار البرنامج.
تحققوا دائمًا مما إذا كانت قيمة الإرجاع الأولى هي nil قبل استخدامها.
local json = require("dkjson")
local data, pos, err = json.decode("{bad")
if not data then
print("Invalid JSON:", err)
endتحقق سريع
اختبروا فهمكم لأساسيات JSON في Lua.
مراجعة
JSON هو تنسيق عالمي للبيانات، ويتوافق بسهولة مع جداول Lua. تفتقر Lua القياسية إلى دعم JSON، لذلك تحمّلون مكتبة مثل dkjson أو cjson.
العمليتان الأساسيتان هما json.decode (من سلسلة إلى جدول) وjson.encode (من جدول إلى سلسلة). بعد ذلك ستتعلّمون فك ترميز JSON إلى جداول بالتفصيل.
الأسئلة الشائعة
هل درس «لماذا JSON» مجاني؟
نعم — نص درس «لماذا JSON» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Lua Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Lua Academy 4 دروس في المجموع.
ماذا ستتعلم في «لماذا JSON»؟
أساسيات تبادل البيانات تتمرن على Lua Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Lua Academy؟
لا تُشترط خبرة سابقة. Lua Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 1 من أصل 4.
كم من الوقت يستغرق درس «لماذا JSON»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Lua Academy هذا؟
نعم. كل درس في Lua Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.