تسطيح بنية JSON-LD — Numio
يسطّح (flattening) مستند JSON-LD باستخدام jsonld.flatten: تصبح كل عقدة، بما فيها المتداخلة، مُدخلًا في المستوى الأعلى داخل @graph، وتُستبدل الكائنات المتداخلة بمراجع {"@id"}. وتحصل العقد غير المسمّاة على معرّفات عقد فارغة مثل _:b0.
تحويل JSON-LD شديد التداخل إلى قائمة مسطّحة من العقد يسهل فهرستها بـ @id أو تحميلها إلى مخزن.
متى تستخدمها
- تحويل JSON-LD شديد التداخل إلى قائمة مسطّحة من العقد يسهل فهرستها بـ @id أو تحميلها إلى مخزن.
- معرفة الكائنات المتداخلة التي لا تملك @id، إذ تظهر كعقد فارغة _:b.
طريقة الاستخدام
- الصق المستند في محرر JSON-LD.
- ضع في محرر Context السياق الذي تُضغط به النتيجة، مثل {"@context": {"@vocab": "http://schema.org/"}}.
- اقرأ مصفوفة @graph التي تُدرج كل عقدة مرة واحدة مرتبةً حسب @id.
JSON-LD + السياق
// JSON-LD editor
{
"@context": {"@vocab": "http://schema.org/"},
"@id": "http://example.org/order/7",
"@type": "Order",
"customer": {"name": "Jane Doe"},
"orderedItem": [
{"@id": "http://example.org/product/42", "name": "Lamp"}
]
}
// Context editor
{"@context": {"@vocab": "http://schema.org/"}}JSON-LD مسطّح
{
"@context": {
"@vocab": "http://schema.org/"
},
"@graph": [
{
"@id": "_:b0",
"name": "Jane Doe"
},
{
"@id": "http://example.org/order/7",
"@type": "Order",
"customer": {
"@id": "_:b0"
},
"orderedItem": {
"@id": "http://example.org/product/42"
}
},
{
"@id": "http://example.org/product/42",
"name": "Lamp"
}
]
}التفاصيل والقيود
محرر Context مطلوب ويجب أن يحتوي على JSON صالح؛ إذ تُضغط النتيجة به.
تُسند معرّفات العقد الفارغة (_:b0 و_:b1 و…) أثناء المعالجة وليست معرّفات ثابتة.
يعمل في متصفحك باستخدام jsonld.js. يجلب متصفحك السياقات البعيدة في أي من المحررين. إذا فشل التنزيل، تعرض الصفحة خطأً يذكر عنوان URL للسياق.
FAQ
ماذا يحدث للكائنات المتداخلة؟
يصبح كل كائن متداخل مُدخلًا مستقلًا في @graph، ولا يحتفظ الأب إلا بمرجع، مثل "customer": {"@id": "_:b0"}.
لماذا تظهر مصفوفة ذات عنصر واحد ككائن؟
لأن النتيجة مضغوطة، تُكتب الخاصية ذات القيمة الواحدة (orderedItem أعلاه) دون مصفوفة.
هل تُدمج العقدة نفسها إذا ظهرت مرتين؟
نعم. تُدمج العقد ذات @id نفسه في مُدخل واحد يضم جميع خصائصها.