مكتبة Json لقراءة شفرة Json في لغة الأسس

مكتب Json

هي مكتبة مفتوح المصدر (تحت ترخيص MIT) لقراءة شفرة Json
الشفرة المصدرية: https://github.com/xlmnxp/Json
للتبليغ عن علة: https://github.com/xlmnxp/Json/issues

التثبيت

بإمكانك تثبيت الحزمة عن طريقة مدير الحزم Apm

apm install xlmnxp/Json

او جلبها داخل الشفرة المصدريه مباشرة وسيقوم Apm بتثبيتها

import "Apm.alusus";
Apm.importFile("xlmnxp/Json")

الاستخدام

لاستخدام المكتب بعد استدعائها كل ماعليك فعله هو تهئية متغير بنوع Json والحاق له قيمة نصية
مثال

import "Srl/Console.alusus";
import "Apm.alusus";
Apm.importFile("xlmnxp/Json")

use Srl;
def parsedJson: Json = "{\"lang\": \"alusus\"}"
Console.print(parsedJson.getString("lang")) // output: 'alusus

مثال

import "Srl/Console.alusus"
import "Apm.alusus"
Apm.importFile("xlmnxp/Json");

use Srl;
def jsonObject: Json = "{\"glossary\": {\"title\": \"example glossary\",\"GlossDiv\": {\"title\": \"S\", \"GlossList\": {\"GlossEntry\": {\"ID\": \"SGML\",	\"SortAs\": \"SGML\", \"GlossTerm\": \"Standard Generalized Markup Language\", \"Acronym\": \"SGML\", \"Abbrev\": \"ISO 8879:1986\", \"GlossDef\": {\"para\": \"A meta-markup language, used to create markup languages such as DocBook.\",\"GlossSeeAlso\": [\"GML\", \"XML\"]}, \"GlossSee\": \"markup\"}}}}}";
Console.print(jsonObject.getObject("glossary").getObject("GlossDiv").getObject("GlossList").getObject("GlossEntry").getObject("GlossDef").getObject("GlossSeeAlso").getString(1)); // output: 'XML
2 Likes

رائع :heart:
شكرا لك

1 Like

اطلعت على الشفرة المصدرية للتو. عمل جميل. قد يكون بالإمكان تبسيط التعامل معه أكثر بتعريف مؤثر الأقواس ومؤثرات التمثيل. كما في هذا المثال:

handler this(i: int) return this.get(i);
handler this~cast[int] {
  def ret: int;
  String.scan(this.jsonString, "%d", ret~ptr);
  return ret;
};

اشياء من هذا القبيل. طبعا هذا مجرد مثال لكيفية التعامل معها لكن تحتاج لتعديلات أخرى في الشفرة المصدرية. يمكن في النهاية اختصار السطر

    Console.print(jsonObject.getObject("glossary").getObject("GlossDiv").getObject("GlossList").getObject("GlossEntry").getObject("GlossDef").getObject("GlossSeeAlso").getString(1)); // output: 'XML

إلى

Console.print(jsonObject("glossary")("GlossDiv")("GlossList")("GlossEntry")("GlossDef")("GlossSeeAlso")(1)); // output: 'XML

سابحث في الامر وساعمل على تضمين اقتراحك