Omar Altawyan
Omar Altawyan

@Omar_Altawyan

9 Tweets 19 reads Sep 20, 2020
اذا كنت تبرمج C# ❤️وحاب تتعامل مع json 😎في برنامجك هالثريد انقل فيه تجربتي من واقع عدة أنظمة production وأيش الأشياء اللي نفعتني فيها وللي ضرتني فيها
في هذا الثريد راح اطبق عملي عشان تتضح الصورة بشكل اكبر
#حزب_المبرمجين #برمجة #برمج
#json #DotNetCore
في البداية نفترض عندي جدول اسمه person🤵 عنده أكثر من عنوان 🏡🏡 في الطريقة المعتادة راح ننشأ جدول بأسم Address عشان نجمع عناوين الشخص لاكن مع json الطريقة أسهل فبدلا من أنشأ جدول أنشأ عمود وأسميه Address ومن نوع nvarchar وأخزن جميع عناوين الشخص حيث أن كل عنوان يمثل json object
والحقل Address عبارة عن array json
من المساوئ هنا 👎👎 أننا في الغالب نخلي حجم الحقل nvarchar max عشان نتفادى حجم بيانات العناوين طبعاً نجي للمهم في السالفة 🤓🤓
كيف نتعامل مع هذا الوضع أنا هنا استخدمت طريقتين الأولى من خلال Models والثانية من خلال Sql server
بالطريقة الأولى استخدمت فيها أداة تسمح لي بتحويل object إلى json والعكس وهي Newtonsoft.Json وهي متوفرة في كل من .net core و .net نشوف الكود كيف تعاملت معه بالبداية لو تلاحظ أني أضفت حقل أسمه AddressAsJson في person والهدف منه استخدامه في التحويل إلى object أو إلى تخزين البيانات
والحقل الثاني اللي راح يكون تعاملنا معه في برنامج هو Addresses والهدف من هذا الحقل هو عندما ينشأ object جديد من person يقوم Address مباشرة بأخذ حقل AddressAsJson وتحويله إلى Array object من Address وبذلك نتمكن من الإضافة والتعديل بشكل مباشرة
الطريقة الثانية وهي في قاعدة البيانات sql server من 2016 وفوق أضافت Microsoft دوال تساعدك في التعامل مع json و في الغالب أنت تحتاج إلى دالتين وهما JSON_VALUE و openjson وفي الصورة جبت حقل AddressAsJson واستعلمت عن كل معلومة بداخله
نجي لزبدة:
1-إذا كان عندك صفحة تستدعي بيانات كثيرة من حقول json فأفضل تبتعد عن الطريقة الأولى لأنه راح يكون الأبلكيشن مضغوط بسبب عملية تحويل json إلى models فالأفضل تستخدم stored procedure وتفصفص فيه البيانات الي تحتاجه
2-اذا كانت تستخدم charts كثير فأنصحك تطلع على For Json وهي عبارة عن دالة في sql server تحولك select إلى json ومن خلال هذه الدالة ماتحتاج تضغط models عشان تخليها json للـ charts
3-لا تستخدم json في البيانات اللي بتسوي لها لاحقاً indexing
4-لا تفرط في استخدمه لأني للحين ما بعد جبت العيد 😂 وأخاف تجيب العيد زيي لاحقاً 😅 وحط لك خط رجعه 💨💨
والله يوفق الجميع في أنظمتهم ❤️🌹

Loading suggestions...