
النيون هي مكتبة تسلسل لـ Delphi تساعدك على تحويل الكائنات (ذهابًا وإيابًا) والقيم الأخرى إلى JSON. وهو يدعم أنواع دلفي البسيطة ولكن أيضًا فئة معقدة وسجلات. تم تصميم النيون مع مراعاة الراحة ، لتبادل البيانات الخالصة بين التطبيقات التي لا تحتوي على "بيانات تعريف" أو حقول إضافية ، في الواقع أن النيون هو محرك التسلسل JSON الافتراضي لمكتبة Wirl Rest.
يرجى إلقاء نظرة على العروض التوضيحية لرؤية النيون في العمل.
هذا هو العرض التجريبي الرئيسي حيث يمكنك أن ترى كيف يمكنك تسلسل/هجر الأنواع البسيطة والسجلات والفئات وأنواع Delphi المحددة (TstringList و Tdataset ، إلخ ...):):

يحاول هذا العرض التوضيحي الجديد مقارنة محرك تسلسل TJSON القياسي مع محرك Tneon ، مع بعض التغييرات التي يمكنك مقارنة tneon مع محركات التسلسل الأخرى هناك:

تكوين مكثف من خلال واجهة INeonConfiguration :
يدعم النيون تسلسل (DE) لمعظم أنواع Delphi القياسية والسجلات والمصفوفة وبالطبع. يمكن أن تكون الفصول الدراسية معقدة كما تريد ، يمكن أن تحتوي على صفيف ، قوائم (عامة) ، فئات فرعية ، سجل ، إلخ ...
TCustomSerializer وتسجيل فئة التسلسل الجديدة في التكوين تم اختبار هذه المكتبة مع Delphi 12 Athens و Delphi 11 Alexandria و Delphi 10.4 Sydney و Delphi 10.3 Rio و Delphi 10.2 Tokyo ، ولكن مع الحد الأدنى
لا تحتوي هذه المكتبة على تبعيات على المكتبات/الوحدات الخارجية.
وحدات دلفي المستخدمة:
ما عليك سوى إضافة مسار المصدر "مصدر" إلى مسار مشروع Delphi الخاص بك و .. أنت على ما يرام!
أسهل طريقة لتسلسل وتهريب هو استخدام فئة فائدة TNeon :
تسلسل الكائن:
var
LJSON: TJSONValue;
begin
LJSON := TNeon.ObjectToJSON(AObject);
try
Memo1.Lines.Text := TNeon.Print(LJSON, True);
finally
LJSON.Free;
end ;
end ;كائن هجرات:
var
LJSON: TJSONValue;
begin
LJSON := TJSONObject.ParseJSONValue(Memo1.Lines.Text);
try
TNeon.JSONToObject(AObject, LJSON, AConfig);
finally
LJSON.Free;
end ; باستخدام فصول TNeonSerializerJSON و TNeonDeserializerJSON ، لديك المزيد من التحكم في هذه العملية.
تسلسل الكائن:
var
LJSON: TJSONValue;
LWriter: TNeonSerializerJSON;
begin
LWriter := TNeonSerializerJSON.Create(AConfig);
try
LJSON := LWriter.ObjectToJSON(AObject);
try
Memo1.Lines.Text := TNeon.Print(LJSON, True);
MemoError.Lines.AddStrings(LWriter.Errors);
finally
LJSON.Free;
end ;
finally
LWriter.Free;
end ;
end ;كائن هجرات:
var
LJSON: TJSONValue;
LReader: TNeonDeserializerJSON;
begin
LJSON := TJSONObject.ParseJSONValue(Memo1.Lines.Text);
if not Assigned(LJSON) then
raise Exception.Create( ' Error parsing JSON string ' );
try
LReader := TNeonDeserializerJSON.Create(AConfig);
try
LReader.JSONToObject(AObject, LJSON);
MemoError.Lines.AddStrings(LWriter.Errors);
finally
LReader.Free;
end ;
finally
LJSON.Free;
end ;من السهل جدًا تكوين النيون ،
var
LConfig: INeonConfiguration;
begin
LConfig := TNeonConfiguration.Default
.SetMemberCase(TNeonCase.SnakeCase) // Case settings
.SetMembers(TNeonMembers.Properties) // Member type settings
.SetIgnoreFieldPrefix(True) // F Prefix settings
.SetVisibility([mvPublic, mvPublished]) // Visibility settings
// Custom serializer registration
.GetSerializers.RegisterSerializer(TGUIDSerializer)
;
end ;