
DataSet Serialize هي مجموعة من الميزات لجعل العمل مع JSON و DataSet بسيط. يحتوي على ميزات مثل تصدير أو استيراد السجلات إلى مجموعة بيانات ، والتحقق من صحة ما إذا كانت JSON لديها جميع السمات المطلوبة (تم إدخالها مسبقًا في مجموعة البيانات) ، أو تصدير أو استيراد بنية حقول مجموعات البيانات بتنسيق JSON. بالإضافة إلى إدارة JSON المتداخلة من خلال التفاصيل الرئيسية أو استخدام TDATASETFIELD (يمكنك اختيار الطريقة التي تناسبك بشكل أفضل). كل هذا باستخدام مساعدي الفصل ، مما يجعله أكثر بساطة وأسهل في الاستخدام.
[Optional] للراحة ، أوصي باستخدام Boss (مدير التبعية لـ Delphi) للتثبيت ، ببساطة عن طريق تشغيل الأمر أدناه على محطة (Windows PowerShell على سبيل المثال): boss install github.com/viniciussanchez/dataset-serialize
إذا اخترت التثبيت يدويًا ، فما عليك سوى إضافة المجلدات التالية إلى مشروعك ، في Project> Options> Building> Delphi Compiler> Search Path
../dataset-serialize/src
توجد جميع الميزات التي تقدمها SARASET Serialize في الفئة المساعد في مجموعة بيانات الوحدة. لبدء تشغيل مشروعك ، ما عليك سوى إضافة مرجعك إلى مكان الحاجة إلى وظيفتك. هذا مثال:
uses DataSet.Serialize;دعونا الآن نلقي نظرة على كل ميزة ، قواعدها وخصائصها ، لتقديم أفضل ما في ذلك لجميع المستخدمين.
يبدو أن إنشاء كائن JSON يحتوي على معلومات من سجل مجموعة البيانات بمثابة مهمة بسيطة للغاية. لكن هذه المهمة أصبحت أسهل. يحتوي Serialize على وظيفتين لهذا ، وهما TojsonObject و Tojsonarray. دعونا نلقي نظرة على استخدام الوظائف:
var
LJSONArray: TJSONArray;
LJSONObject: TJSONObject;
begin
LJSONObject := qrySamples.ToJSONObject(); // export a single record
LJSONArray := qrySamples.ToJSONArray(); // export all records
end ;ما هو الفرق بين الوظيفتين؟ ستقوم TojsonObject بتحويل سجل مجموعة البيانات الحالي إلى TJsonObject. سيتم تحويل Tojsonarray إلى TJsonArray جميع سجلات مجموعة البيانات وليس فقط السجل المحدد.
حدود
AChildRecords - يشير إلى ما إذا كان سيتم تصدير سجلات الأطفال (عبر التفاصيل الرئيسية أو TDATASETFIELD).AOnlyUpdatedRecords - إلى ما إذا كان سيتم تصدير السجلات التي تم تعديلها فقط (تم إضافة السجلات أو تغييرها أو حذفها). هذه الميزة متاحة فقط عند استخدام FireDac. يجب أن تكون خاصية CacheDupdates صحيحة ؛tojsonoBject
{} ) ؛توجوناراي
[] ) ؛ميزة غير مفيدة للغاية ولكنها مهمة هي الحافز والبنية. كما قال الاسم بالفعل ، من الممكن حفظ البنية الكاملة للحقول التي تم تكوينها في مجموعة البيانات وأيضًا تحميل بنية بتنسيق JSON. إليك مثال على كيفية تحميل وتصدير حقول مجموعات البيانات:
var
LJSONArray: TJSONArray;
begin
LJSONArray := qrySamples.SaveStructure;
qrySamples.LoadStructure(LJSONArray, True);
end ;يتم التحكم في الخصائص التالية:
Alignment, FieldName, DisplayLabel, DataType, Size, Key, Origin, Required, Visible, ReadOnly, and AutoGenerateValue ؛
حدود
AOwns - يشير إلى من هو المسؤول عن تدمير JSON التي تم تمريرها كمعلمة.وحشية
[] ) ؛الحمل
تعد وظيفة ValidateJson مفيدة للغاية عندما نريد التحقق من صحة الخادم على سبيل المثال إذا كان لدى JSON الذي تلقيناه في الطلب جميع المعلومات المطلوبة. من الناحية العملية ، يتم اجتياز جميع الحقول في مجموعة البيانات ، والتحقق مما إذا كانت الحقول المطلوبة قد تم إدخالها في JSON. إذا كان الحقل مطلوبًا ولم يتم إدخاله في JSON ، فسيتم إضافته إلى مجموعة JSON التي يتم إرجاعها بواسطة الوظيفة. انظر المثال أدناه:
begin
LJSONArray := qrySamples.ValidateJSON( ' {"country":"Brazil"} ' );
end ; عند استلام {"country": "Brazil"} ، على افتراض أن مجموعة البيانات لدينا لديها 3 حقول (ID ، First_Name ، Country) ، وحقل ID و First_Name ، سيتم إرجاع ما يلي:
[{"field":"id","error":"Id not informed"},{"field":"firstName","error":"Name not informed"}]
حدود
ALang - مسؤول عن تغيير اللغة المستخدمة في تجميع الرسائل (الافتراضي هو اللغة الإنجليزية) ؛AOwns - يشير إلى من هو المسؤول عن تدمير JSON التي تم تمريرها كمعلمة ؛ValidateJson
[] ) ؛يتيح لك DataSet Serializa تحميل مجموعة بيانات مع JsonObject و JSonarray وحتى JSON المتداخلة جميعها ملخصة بطريقة واحدة: loadfromjson (). إليك مثال على كيفية استخدامه:
begin
qrySamples.LoadFromJSON( ' {"firstName":"Vinicius Sanchez","country":"Brazil"} ' );
end ;حدود
AOwns - يشير إلى من هو المسؤول عن تدمير JSON التي تم تمريرها كمعلمة ؛loadfromjson
مع تسلسل مجموعة البيانات ، لا يزال بإمكانك تغيير تسجيل مجموعة البيانات ببساطة باستخدام MergeFromJsonObject. الوظيفة تشبه loadfromjson. مثال على الاستخدام هو لخوادم REST عندما يتم طرح الفعل المستخدم في الطلب (وليس بالضرورة) ، في هذه الحالة لا نريد تضمين سجل جديد ولكن لتغيير السجل الحالي.
begin
qrySamples.MergeFromJSONObject( ' {"firstName":"Vinicius","country":"United States"} ' );
end ;حدود
AOwns - يشير إلى من هو المسؤول عن تدمير JSON التي تم تمريرها كمعلمة ؛mergefromjsonoBject
يمكنك تخصيص بعض ميزات مجموعة البيانات:
TDataSetSerializeConfig.GetInstance.DateInputIsUTC := True; TDataSetSerializeConfig.GetInstance. Export .ExportNullValues := True; TDataSetSerializeConfig.GetInstance. Export .TryConvertStringToJson := True; TDataSetSerializeConfig.GetInstance. Export .ExportOnlyFieldsVisible := True; TDataSetSerializeConfig.GetInstance. Export .ExportChildDataSetAsJsonObject := False; TDataSetSerializeConfig.GetInstance. Export .ExportLargeIntAsString := False; TDataSetSerializeConfig.GetInstance. Export .ExportBCDAsFloat := False; TDataSetSerializeConfig.GetInstance. Import .ImportOnlyFieldsVisible := True; TDataSetSerializeConfig.GetInstance. Import .DecodeBase64BlobField := True; TDataSetSerializeConfig.GetInstance.RemoveBlankSpaceFieldName := True; // default // cndNone, cndLower, cndUpper, cndLowerCamelCase, cndUpperCamelCase
TDataSetSerializeConfig.GetInstance.CaseNameDefinition := TCaseNameDefinition.cndLowerCamelCase;
TCaseNameDefinition.cndNone:
[ { "MOB_ICADASTRO":11795,"MOB_EMI_REG":6,"CODIGODOCLIENTE":1,"CDOCUMEN1":"999999" } ]
TCaseNameDefinition.cndLower:
[ { "mob_icadastro":11795,"mob_emi_reg":6,"codigodocliente":1,"cdocumen1":"999999" } ]
TCaseNameDefinition.cndUpper:
[ { "MOB_ICADASTRO":11795,"MOB_EMI_REG":6,"CODIGODOCLIENTE":1,"CDOCUMEN1":"999999" } ]
TCaseNameDefinition.cndLowerCamelCase:
[ { "mobIcadastro":11795,"mobEmiReg":6,"codigodocliente":1,"cdocumen1":"999999" } ]
TCaseNameDefinition.cndUpperCamelCase:
[ { "MobIcadastro":11795,"MobEmiReg":6,"Codigodocliente":1,"Cdocumen1":"999999" } ] TDataSetSerializeConfig.GetInstance. Export .FormatDate := ' YYYY-MM-DD ' ; TDataSetSerializeConfig.GetInstance. Export .FormatCurrency := ' 0.00## ' ; TDataSetSerializeConfig.GetInstance. Export .FormatFloat := ' ,0.00 ' ; TDataSetSerializeConfig.GetInstance.DataSetPrefix := [ ' mt ' , ' qry ' ];تحقق من مشروع العينة لدينا لكل موقف معروض أعلاه في العملية. إذا كان لديك أي أسئلة أو اقتراح ، فيرجى الاتصال أو تقديم طلب السحب أو إنشاء مشكلة.

DataSet-Serialize مجاني ومفتوح المصدر مرخصة بموجب ترخيص معهد ماساتشوستس للتكنولوجيا.
وحدنا نذهب أسرع. معا نذهب أبعد من ذلك.