قراءة JSON وكتابته
JSON.parse وgenerate
قراءة JSON وكتابته درس مجاني في Ruby Academy على CoddyKit. هذا هو الدرس 1 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Ruby Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Ruby Academy 4 دروس في المجموع.
ما هو JSON؟
إنّ JSON (JavaScript Object Notation) تنسيق نصي خفيف لتبادل البيانات. وهو يتوافق بسهولة مع Hashes ومصفوفات Ruby.
استدعِ مكتبة json لاستخدامه.
require 'json'
data = { name: 'Ruby', year: 1995 }
puts(JSON.generate(data))تحليل نص JSON
يحوّل JSON.parse سلسلة JSON إلى كائنات Ruby: فالكائنات تصبح Hashes، والمصفوفات تصبح Arrays.
require 'json'
text = '{"name":"Ruby","year":1995}'
h = JSON.parse(text)
puts(h['name'])
puts(h['year'])إنشاء نص JSON
يحوّل JSON.generate (أو to_json على الكائنات) بيانات Ruby إلى سلسلة JSON مدمجة.
require 'json'
arr = [1, 2, { ok: true }]
puts(arr.to_json)الطباعة المنسّقة
ينتج JSON.pretty_generate JSON مقروءًا للبشر ومنسّقًا بمسافات بادئة، وهو مثالي لملفات الإعداد وتصحيح الأخطاء.
require 'json'
data = { name: 'Ruby', tags: ['fun', 'oop'] }
puts(JSON.pretty_generate(data))مفاتيح Symbol عند التحليل
تكون المفاتيح المحلّلة من النوع String افتراضيًا. مرّر symbolize_names: true للحصول بدلًا من ذلك على مفاتيح من النوع Symbol.
require 'json'
h = JSON.parse('{"name":"Ruby"}', symbolize_names: true)
puts(h[:name])البُنى المتداخلة
يدعم JSON التداخل. ويعيد التحليل بناء الشجرة الكاملة من Hashes وArrays.
require 'json'
text = '{"user":{"name":"Ada","roles":["admin","dev"]}}'
h = JSON.parse(text)
puts(h['user']['name'])
puts(h['user']['roles'][1])مطابقة الأنواع
تتطابق أنواع JSON مع Ruby كما يلي:
- object → Hash، وarray → Array
- string → String، وnumber → Integer/Float
- true/false → true/false، وnull → nil
require 'json'
h = JSON.parse('{"a":1,"b":1.5,"c":null,"d":true}')
puts(h['a'].class)
puts(h['c'].inspect)كتابة JSON إلى ملف
اجمع بين pretty_generate وFile.write لحفظ البيانات على القرص.
require 'json'
require 'tmpdir'
path = File.join(Dir.tmpdir, 'data.json')
File.write(path, JSON.pretty_generate({ ok: true }))
puts(File.read(path))قراءة JSON من ملف
اقرأ محتويات الملف وحلّلها في خطوة واحدة.
require 'json'
require 'tmpdir'
path = File.join(Dir.tmpdir, 'cfg.json')
File.write(path, '{"port":8081}')
cfg = JSON.parse(File.read(path))
puts(cfg['port'])التعامل مع أخطاء التحليل
يؤدي JSON غير السليم إلى رفع JSON::ParserError. عالج هذا الاستثناء للتعامل مع الإدخال غير الصحيح بطريقة سليمة.
require 'json'
begin
JSON.parse('{not valid}')
rescue JSON::ParserError => e
puts 'Invalid JSON caught'
endرحلة ذهاب وإياب
من المفترض أن تؤدي عملية الإنشاء ثم التحليل إلى إعادة بيانات مكافئة، وهو فحص مفيد للتأكد من سلامة العملية.
require 'json'
original = { id: 7, tags: ['a', 'b'] }
back = JSON.parse(original.to_json, symbolize_names: true)
puts(back == original)اختبار سريع
أي خيار يجعل JSON.parse يعيد مفاتيح من النوع Symbol بدلًا من مفاتيح String؟
مراجعة: قراءة JSON وكتابته
يمكنك نقل البيانات من JSON وإليه:
- يحوّل
JSON.parseالسلسلة إلى كائنات Ruby - يحوّل
to_json/JSON.generateالبيانات إلى JSON مدمج - يُستخدم
pretty_generateللحصول على إخراج مقروء - يُستخدم
symbolize_names: trueللحصول على مفاتيح Symbol - عالج
JSON::ParserErrorعند الإدخال غير الصحيح
require 'json'
puts(JSON.parse('[1,2,3]').sum)الأسئلة الشائعة
هل درس «قراءة JSON وكتابته» مجاني؟
نعم — نص درس «قراءة JSON وكتابته» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Ruby Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Ruby Academy 4 دروس في المجموع.
ماذا ستتعلم في «قراءة JSON وكتابته»؟
JSON.parse وgenerate تتمرن على Ruby Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Ruby Academy؟
لا تُشترط خبرة سابقة. Ruby Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 1 من أصل 4.
كم من الوقت يستغرق درس «قراءة JSON وكتابته»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Ruby Academy هذا؟
نعم. كل درس في Ruby Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- قراءة JSON وكتابته
- التعامل مع CSV
- تهيئة YAML
- اختيار التنسيق