مكتبة لقراءة ملفات جيسون (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();
صنف جـيسون {
عرف المفاتيح: مصفوفة[نص]؛
عرف القيم: مصفوفة[جـيسون]؛
عرف القيمة_الخام: نص؛
}
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])
تهيئة من كائن من هذا الصنف، أي تهيئة ناسخة.
عرف أهو_كائن(): ثنائي؛
handler this.isObject(): bool;
وظيفة تعيد فيما إذا كان نص الجيسون هو كائن أم لا.
عرف أهي_مصفوفة(): ثنائي؛
handler this.isArray(): bool;
وظيفة تعيد فيما إذا كان نص الجيسون مصفوفة أم لا.
عرف هات_الطول(): صحيح؛
handler this.getLength(): Int;
وظيفة تعيد عدد القيم في نص الجيسون.
عرف هات_مفتاح(تسلسل: صـحيح): نص؛
handler this.getKey(index: Int): String;
وظيفة تعيد المفتاح المخزن عند التسلسل المعطى إن كان الجيسون كائنًا. ترجع نصا فارغا إن لم يكن الجيسون كائنا أو كان التسلسل خارج المدى.