Skip to content

Latest commit

 

History

History
242 lines (171 loc) · 5.4 KB

readme.ar.md

File metadata and controls

242 lines (171 loc) · 5.4 KB

Json

[English]

مكتبة لقراءة ملفات جيسون (Json) باستخدام لغة الأسس. تقتصر هذه المكتبة حاليا على قراءة الجيسون و ليس إنشاءه.

الإضافة إلى المشروع

يمكن إضافة المكتبة للمشروع باستعمال مدير الحزم:

اشمل "مـحا"؛
مـحا.اشمل_ملف("Alusus/Json"، "جـيسون.أسس")؛
import "Apm";
Apm.importFile("Alusus/Json");

مثال

اشمل "مـتم/طـرفية.أسس"؛
اشمل "مـحا"؛
مـحا.اشمل_ملف("Alusus/Json"، "جـيسون.أسس")؛

استخدم مـتم؛


دالة ابدا {
    // نقوم بتعريف متغير من النمط جـيسون يحمل البيانات التي نريدها
    عرف كائن: جـيسون = "{\n\t\"id\": 1,\n\t\"classes\": [\"c1\", \"c2\", \"c3\"],\n\t\"passed\": true\n}"

    // نقوم بجلب القيمة المخزنة في المفتاح id كمتغير صحيح
    عرف معرف: صحيح = كائن("id")؛
    طـرفية.اطبع("id is %d\n", معرف)؛

    // نقوم بالتحقق من أن القيمة المخزنة في المفتاح classes هي مصفوفة
    عرف كائن_الصفوف: جـيسون = كائن("classes")؛
    إذا كائن_الصفوف.أهي_مصفوفة() {
        طـرفية.اطبع("Array\n")؛
    }
    وإلا {
        طـرفية.اطبع("Not array\n")؛
    }

    // نقوم بجلب القيمة المخزنة في المفتاح passed كمتغير ثنائي
    عرف نجح: ثنائي = كائن("passed")؛
    // نقوم بالتحقق فيما إذا نجح الطالب أم لا
    إذا نجح {
        طـرفية.اطبع("passed\n")؛
    }
    وإلا {
        طـرفية.اطبع("failed\n")؛
    }
}
ابدا()؛
import "Srl/Console.alusus"
import "Apm";
Apm.importFile("Alusus/Json");

use Srl
func start {
    // نقوم بتعريف متغير من النمط جـيسون يحمل البيانات التي نريدها
    def obj: Json = "{\n\t\"id\": 1,\n\t\"classes\": [\"c1\", \"c2\", \"c3\"],\n\t\"passed\": true\n}"

    // كمتغير صحيح id نقوم بجلب القيمة المخزنة في المفتاح
    def id: int = obj("id");
    Console.print("id is %d\n", id);

    // هي مصفوفة classes نقوم بالتحقق من أن القيمة المخزنة في المفتاح
    def classesObj: Json = obj("classes");
    if (classesObj.isArray()) {
        Console.print("Array\n");
    }
    else {
        Console.print("Not array\n");
    }

    // كمتغير ثنائي passed نقوم بجلب القيمة المخزنة في المفتاح
    def passed: Bool = obj("passed");
    // نقوم بالتحقق فيما إذا نجح الطالب أم لا
    if (passed) {
        Console.print("passed\n");
    }
    else {
        Console.print("failed\n");
    }

}
start();

الصنف جـيسون (Json)

المتغيرات

صنف جـيسون {
    عرف المفاتيح: مصفوفة[نص]؛
    عرف القيم: مصفوفة[جـيسون]؛
    عرف القيمة_الخام: نص؛
}
class Json {
    def keys: Array[String];
    def values: Array[Json];
    def rawValue: String;
}

المفاتيح (keys): المفاتيح التي يحويها الجيسون إن كان كائنًا.

القيم (values) القيم التي يحويها الجيسون إن كان مصفوفة أو كائنًا.

القيمة_الخام (rawValue): سلسلة نصية للقيمة الحالية إن لم تكن مصفوفة ولا كائنًا.

التهيئة

يمكن تهيئة هذا الصنف باستعمال العديد من الطرق:

عملية هذا~هيئ()
handler this~init()

تهيئة افتراضية بدون أي قيم.

عملية هذا~هيئ(نص: مؤشر[مصفوفة[مـحرف]])
handler this~init(str: ptr[array[Char]])

تهيئة من مصفوفة من المحارف.

عملية هذا~هيئ(جيسون: سند[جـيسون])
handler this~init(json: ref[Json])

تهيئة من كائن من هذا الصنف، أي تهيئة ناسخة.

أهو_كائن (isObject)

عرف أهو_كائن(): ثنائي؛
handler this.isObject(): bool;

وظيفة تعيد فيما إذا كان نص الجيسون هو كائن أم لا.

أهي_مصفوفة (isArray)

عرف أهي_مصفوفة(): ثنائي؛
handler this.isArray(): bool;

وظيفة تعيد فيما إذا كان نص الجيسون مصفوفة أم لا.

هات_الطول (getLength)

عرف هات_الطول(): صحيح؛
handler this.getLength(): Int;

وظيفة تعيد عدد القيم في نص الجيسون.

هات_مفتاح (getKey)

عرف هات_مفتاح(تسلسل: صـحيح): نص؛
handler this.getKey(index: Int): String;

وظيفة تعيد المفتاح المخزن عند التسلسل المعطى إن كان الجيسون كائنًا. ترجع نصا فارغا إن لم يكن الجيسون كائنا أو كان التسلسل خارج المدى.