0Pricing
JavaScript Academy · درس

استراتيجيات تحليل JSON الآمن

حلّلوا JSON غير الموثوق بأمان باستخدام try/catch، وعمليات تحقق صغيرة من البنية، وقيم افتراضية، وأدوات مساعدة صغيرة

استراتيجيات تحليل JSON الآمن درس مجاني في JavaScript Academy على CoddyKit. هذا هو الدرس 3 من أصل 3. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في JavaScript Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة JavaScript Academy 3 دروس في المجموع.

لماذا التحليل الآمن؟

الهدف: قراءة JSON دون مفاجآت.

  • استخدام try/catch حول parse
  • مساعد صغير باسم safeParse
  • التحقق من البنية للحقول المطلوبة
  • قيم افتراضية للحقول الاختيارية
استراتيجيات تحليل JSON الآمن — رسم توضيحي 1

مساعد safeParse

استخدموا safeParse صغيرًا لتجنب الأعطال وإظهار الأخطاء بوضوح.

// safeParse: never throws, returns { ok, value, error }
function safeParse(text) {
  try {
    const value = JSON.parse(text);
    return { ok: true, value: value, error: null };
  } catch (e) {
    return { ok: false, value: null, error: String(e.message) };
  }
}

// Demo
const good = safeParse("{\"name\":\"Ayla\",\"age\":20}");
const bad  = safeParse("{broken}");

console.log("good.ok:", good.ok, "name:", good.value && good.value.name);
console.log("bad.ok:", bad.ok, "error:", bad.error);
استراتيجيات تحليل JSON الآمن — رسم توضيحي 2

التحقق من البنية

أضيفوا أدوات تحقق صغيرة للحقول المطلوبة (name وage) وللنطاقات البسيطة.

// Validate required fields and simple types
function isNonEmptyString(x) {
  return typeof x === "string" && x.trim().length > 0;
}

function isNonNegativeInt(x) {
  return Number.isInteger(x) && x >= 0;
}

function validateUser(u) {
  if (u == null || typeof u !== "object") {
    return { ok: false, reason: "not an object" };
  }
  if (!isNonEmptyString(u.name)) {
    return { ok: false, reason: "name required" };
  }
  if (!isNonNegativeInt(u.age)) {
    return { ok: false, reason: "age must be a non-negative integer" };
  }
  return { ok: true };
}

// Demo
const rawUser = "{\"name\":\"Mina\",\"age\":22}";
const parsed = safeParse(rawUser);

if (parsed.ok) {
  console.log("valid?", validateUser(parsed.value));
}
استراتيجيات تحليل JSON الآمن — رسم توضيحي 3

القيم الافتراضية للحقول الاختيارية

استخدموا ?? وعمليات تحقق بسيطة لتعيين قيم افتراضية آمنة للحقول الاختيارية.

// Apply defaults using nullish coalescing and spread
function normalizeUser(u) {
  const theme = (u.theme ?? "light");        // default theme
  const tags  = Array.isArray(u.tags) ? u.tags : [];
  return { ...u, theme: theme, tags: tags };
}

// Demo
const raw = "{\"name\":\"Lena\",\"age\":19}";
const p = safeParse(raw);
if (p.ok) {
  const v = normalizeUser(p.value);
  console.log("theme:", v.theme, "tags:", v.tags);
}
استراتيجيات تحليل JSON الآمن — رسم توضيحي 4

النطاقات والحدود القصوى

قيّد النطاقات الرقمية وضع حدًا لأحجام المصفوفات للحفاظ على أمان البيانات وقابليتها للتوقّع.

// Guard numbers and arrays with tiny limits
function clampNumber(x, min, max) {
  if (typeof x !== "number" || !Number.isFinite(x)) return min;
  return Math.min(max, Math.max(min, x));
}

function toStringArray(a) {
  if (!Array.isArray(a)) return [];
  return a.map(function (x) { return String(x); }).slice(0, 5); // cap length
}

// Demo
const cfgText = "{\"limit\":200,\"labels\":[\"a\",\"b\",\"c\",\"d\",\"e\",\"f\"]}";
const cfg = safeParse(cfgText);
if (cfg.ok) {
  const limit = clampNumber(cfg.value.limit, 1, 100);
  const labels = toStringArray(cfg.value.labels);
  console.log("limit:", limit, "labels:", labels);
}
استراتيجيات تحليل JSON الآمن — رسم توضيحي 5

حلّل → تحقّق → طبّع

خط أنابيب: حلّل → تحقّق → طبّع. اجعل الدوال صغيرة وسهلة القراءة.

// Putting it together: parse → validate → normalize
function readUser(jsonText) {
  const p = safeParse(jsonText);
  if (!p.ok) return { ok: false, reason: "parse: " + p.error };

  const check = validateUser(p.value);
  if (!check.ok) return { ok: false, reason: "shape: " + check.reason };

  const normalized = normalizeUser(p.value);
  return { ok: true, value: normalized };
}

// Demo
const text = "{\"name\":\"Ayla\",\"age\":21,\"tags\":[\"new\"],\"theme\":\"dark\"}";
console.log(readUser(text));
استراتيجيات تحليل JSON الآمن — رسم توضيحي 6

اختبار التحليل الآمن

تحقّق سريع: النمط الآمن.

استراتيجيات تحليل JSON الآمن — رسم توضيحي 7

مراجعة

مراجعة: أنشئ safeParse صغيرًا، وتحقّق من الحقول المطلوبة وأنواعها، وقيّد الأرقام، وضع حدًا للمصفوفات، وطبّق القيم الافتراضية حتى يتعامل تطبيقك مع الإدخالات غير الصالحة بهدوء.

استراتيجيات تحليل JSON الآمن — رسم توضيحي 8

الأسئلة الشائعة

هل درس «استراتيجيات تحليل JSON الآمن» مجاني؟

نعم — نص درس «استراتيجيات تحليل JSON الآمن» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة JavaScript Academy، انتقل إلى CoddyKit PRO. تتضمن دورة JavaScript Academy 3 دروس في المجموع.

ماذا ستتعلم في «استراتيجيات تحليل JSON الآمن»؟

حلّلوا JSON غير الموثوق بأمان باستخدام try/catch، وعمليات تحقق صغيرة من البنية، وقيم افتراضية، وأدوات مساعدة صغيرة تتمرن على JavaScript Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ JavaScript Academy؟

لا تُشترط خبرة سابقة. JavaScript Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 3 من أصل 3.

كم من الوقت يستغرق درس «استراتيجيات تحليل JSON الآمن»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس JavaScript Academy هذا؟

نعم. كل درس في JavaScript Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. أساسيات JSON.parse وJSON.stringify
  2. الاستنساخ البنيوي وURLSearchParams
  3. استراتيجيات تحليل JSON الآمن
← العودة إلى JavaScript Academy