البرمجة

بحث JSON في Ruby: العثور على الأذونات

لتحقيق هدفك في تحليل ال JSON والحصول على قيمة معينة على أساس معايير محددة، يجب أولاً فهم تركيبة ال JSON وتحليله بشكل صحيح. في هذا ال JSON، يتكون كل عنصر من مصفوفة تحتوي على عدة مفاتيح مختلفة مثل “resourceId”، “resourceName”، “resourceDesc”، “permissions”، و”productName”. بعض المفاتيح تحتوي على قيم أخرى مثل “permissions” التي بدورها تحتوي على مصفوفة من الأذونات، كل منها يحتوي على “id”، “operation”، و “assignedToRoleFlag”.

للبدء، يمكنك استخدام مكتبة Ruby الرائعة لمعالجة JSON للوصول إلى القيم المطلوبة. في البداية، يجب عليك تحويل ال JSON إلى هيكل بيانات Ruby لتتمكن من الوصول إلى القيم بسهولة.

فيما يلي مثال على كيفية الوصول إلى قيمة “id” في حالة كون “resourceName” تساوي “Admin.Config” و “operation” تساوي “Read”:

ruby
require 'json' json_data = '{ "data": [{ "resourceId": 381, "resourceName": "Admin.Config", "resourceDesc": "Correspondence Admin -> Configuration", "permissions": [{ "id": 1081, "operation": "Update", "assignedToRoleFlag": false }, { "id": 1071, "operation": "Read", "assignedToRoleFlag": false }], "productName": "Doc" }, { "resourceId": 391, "resourceName": "Admin.Usage", "resourceDesc": "Correspondence Admin -> Usage", "permissions": [{ "id": 1091, "operation": "Read", "assignedToRoleFlag": false }], "productName": "Doc" }] }' data_hash = JSON.parse(json_data) permissions_ids = [] data_hash['data'].each do |resource| if resource['resourceName'] == 'Admin.Config' resource['permissions'].each do |permission| if permission['operation'] == 'Read' permissions_ids << permission['id'] end end end end puts "IDs for Admin.Config with operation Read: #{permissions_ids}"

هذا المثال يستخدم مكتبة JSON لتحليل ال JSON إلى بيانات Ruby قابلة للمعالجة. ثم يتم فحص كل عنصر في “data” للتأكد مما إذا كان “resourceName” يساوي “Admin.Config”، ثم يتم فحص كل عنصر في “permissions” للعثور على “operation” الذي يساوي “Read”، وإذا كان كذلك، يتم إضافة قيمة “id” إلى قائمة الأذونات.

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

المزيد من المعلومات

بعد الحصول على البيانات المطلوبة، يمكنك استخدامها بالطريقة التي تناسب احتياجاتك. على سبيل المثال، يمكنك استخدام القائمة التي تحتوي على معرّفات الأذونات (IDs) لتنفيذ إجراءات أخرى في التطبيق الخاص بك، مثل فحص صلاحيات المستخدمين أو تسجيل الأنشطة.

من الجيد أيضًا أن تضع العملية في دالة قابلة لإعادة الاستخدام، حيث يمكنك إعادة استخدامها في أجزاء مختلفة من التطبيق الخاص بك. هذا يسهل عليك تنظيم الشفرة وصيانتها في المستقبل.

هذا هو المثال السابق محسّنًا بإضافة دالة للبحث عن الأذونات بناءً على المعايير المطلوبة:

ruby
require 'json' # تعريف الدالة للبحث عن الأذونات بناءً على المعايير def find_permissions(data, resource_name, operation) permissions_ids = [] data.each do |resource| if resource['resourceName'] == resource_name resource['permissions'].each do |permission| if permission['operation'] == operation permissions_ids << permission['id'] end end end end permissions_ids end # البيانات المستخدمة كمثال json_data = '{ "data": [{ "resourceId": 381, "resourceName": "Admin.Config", "resourceDesc": "Correspondence Admin -> Configuration", "permissions": [{ "id": 1081, "operation": "Update", "assignedToRoleFlag": false }, { "id": 1071, "operation": "Read", "assignedToRoleFlag": false }], "productName": "Doc" }, { "resourceId": 391, "resourceName": "Admin.Usage", "resourceDesc": "Correspondence Admin -> Usage", "permissions": [{ "id": 1091, "operation": "Read", "assignedToRoleFlag": false }], "productName": "Doc" }] }' # تحويل ال JSON إلى بيانات Ruby data_hash = JSON.parse(json_data) # استخدام الدالة للبحث عن الأذونات permissions_ids = find_permissions(data_hash['data'], 'Admin.Config', 'Read') # طباعة النتيجة puts "IDs for Admin.Config with operation Read: #{permissions_ids}"

باستخدام هذا التحسين، يمكنك إعادة استخدام الدالة find_permissions في أي مكان آخر في التطبيق الخاص بك بسهولة، وبدون الحاجة لتكرار الشفرة. هذا يجعل الشفرة أكثر قابلية للصيانة وتطويرها في المستقبل.

مقالات ذات صلة

زر الذهاب إلى الأعلى
إغلاق

أنت تستخدم إضافة Adblock

يرجى تعطيل مانع الإعلانات حيث أن موقعنا غير مزعج ولا بأس من عرض الأعلانات لك فهي تعتبر كمصدر دخل لنا و دعم مقدم منك لنا لنستمر في تقديم المحتوى المناسب و المفيد لك فلا تبخل بدعمنا عزيزي الزائر