Tiny-Json هو متعدد الاستخدامات وسهلة الاستخدام JSON Parser مكتوب في C ومناسبة للأنظمة المضمنة. إنه سريع وقوي ومحمول.
إنه ليس فقط رمز الرمز المميز. يمكنك الوصول إلى بيانات JSON بتنسيق السلسلة أو الحصول على القيم البدائية مباشرة كمتغيرات نوع C دون أي فقدان للأداء.
يمكنك الوصول إلى حقول JSON واحدة على واحدة أو الحصول على قيمها بأسمائها. هذا يساعدك على توفير الكثير من خطوط التعليمات البرمجية المصدر ووقت التطوير.
إذا كنت بحاجة إلى إنشاء سلاسل JSON ، فيرجى زيارة: https://github.com/rafagafe/json-maker
عند تحليل سلسلة نص JSON يتم إنشاء شجرة عن طريق ربط هياكل JSON_T. من السهل جدًا التنقل أو الاستعلام عن هذا الشجرة باستخدام واجهة برمجة تطبيقات المقدمة.
للحفاظ على انخفاض استخدام الذاكرة والمعالجة السريعة لا يتم نسخ الأوتار. عندما تطلب قيمة عنصر JSON ، يتم إرجاع إشارة إلى سلسلة JSON الأصلية.
لتسهيل معالجة البيانات ، يتم إنهاء السلاسل التي تم إرجاعها. يتم تحقيق ذلك من خلال تعيين حرف NULL على شخصيات التحكم JSON مثل الفواصل والأقواس والأقواس وعلامات الاقتباس.
توفر واجهة برمجة تطبيقات Tiny-Json نوعين. jsonType_t هو تعداد لجميع أنواع حقل JSON الممكنة. json_t هي بنية تحتوي على بيانات داخلية لا تحتاج إلى معرفتها.
typedef enum {
JSON_OBJ , JSON_ARRAY , JSON_TEXT , JSON_BOOLEAN ,
JSON_INTEGER , JSON_REAL , JSON_NULL
} jsonType_t ; لتحليل سلسلة JSON استخدم json_create() . نمررها مجموعة من json_t لتخصيص حقول JSON. إذا كانت سلسلة JSON مكونة بشكل سيء أو تحتوي على حقول أكثر من الصفيف ، فإن هذه الوظيفة تُرجع مؤشرًا فارغًا.
enum { MAX_FIELDS = 4 };
json_t pool [ MAX_FIELDS ];
char str [] = "{ "name": "peter", "age": 32 }" ;
json_t const * parent = json_create ( str , pool , MAX_FIELDS );
if ( parent == NULL ) return EXIT_FAILURE ; للحصول على حقل باسمه ، نستخدم json_getProperty() . إذا كان الحقل غير موجود ، فإن الوظيفة تُرجع مؤشرًا فارغًا. للحصول على نوع الحقل ، نستخدم json_getType() .
json_t const * namefield = json_getProperty ( parent , "name" );
if ( namefield == NULL ) return EXIT_FAILURE ;
if ( json_getType ( namefield ) != JSON_TEXT ) return EXIT_FAILURE ; للحصول على قيمة حقل بتنسيق السلسلة ، نستخدم json_getValue() . إنها تُرجع دائمًا سلسلة صالحة فارغة.
char const * namevalue = json_getValue ( namefield );
printf ( "%s%s%s" , "Name: '" , namevalue , "'.n" ); بالنسبة للحقول البدائية ، يمكننا استخدام وظيفة محددة للحصول على قيمة الحقول مباشرة كنوع C ، أو Fi json_getInteger() أو يمكننا استخدام json_getValue() للحصول على قيمتها في تنسيق النص.
json_t const * agefield = json_getProperty ( parent , "age" );
if ( agefield == NULL ) return EXIT_FAILURE ;
if ( json_getType ( agefield ) != JSON_INTEGER ) return EXIT_FAILURE ;
int64_t agevalue = json_getInteger ( agefield );
printf ( "%s%lld%s" , "Age: '" , agevalue , "'.n" );
char const * agetxt = json_getValue ( agefield );
printf ( "%s%s%s" , "Age: '" , agetxt , "'.n" );على سبيل المثال ، كيفية استخدام كائنات JSON المتداخلة والصفائف ، يرجى الاطلاع على مثال-01.C.