
นีออน เป็นไลบรารีการทำให้เป็นอนุกรมสำหรับ Delphi ที่ช่วยให้คุณแปลงวัตถุ (กลับไปกลับมา) และค่าอื่น ๆ เป็น JSON รองรับประเภท Delphi ที่เรียบง่าย แต่ยังมีคลาสที่ซับซ้อนและบันทึก นีออน ได้รับการออกแบบโดยคำนึง ถึงส่วนที่เหลือ เพื่อแลกเปลี่ยนข้อมูลที่บริสุทธิ์ระหว่างแอปพลิเคชันที่ไม่มี "ข้อมูลเมตา" หรือฟิลด์ที่เพิ่มเข้ามาในความเป็นจริง นีออน เป็นเอ็นจิ้นการทำให้เป็นอนุกรม JSON เริ่มต้นสำหรับห้องสมุด RIRL REST
โปรดดูการสาธิตเพื่อดู นีออน ในการดำเนินการ
นี่คือการสาธิตหลักที่คุณสามารถดูว่าคุณสามารถ serialize/deserialize ประเภทง่าย ๆ , บันทึก, คลาส, ประเภทเฉพาะของ Delphi (TStringList, TDataset, ฯลฯ )::

การสาธิตใหม่นี้พยายามเปรียบเทียบเอ็นจิ้น Serialization TJSON มาตรฐานกับเครื่องยนต์ tneon กับการเปลี่ยนแปลงเล็กน้อยคุณสามารถเปรียบเทียบ tneon กับเอ็นจิ้นการทำให้เป็นอนุกรมอื่น ๆ ที่นั่น:

การกำหนดค่าที่กว้างขวางผ่านอินเตอร์เฟส INeonConfiguration :
นีออนรองรับ (DE) การทำให้เป็นอนุกรมของประเภทมาตรฐาน Delphi ส่วนใหญ่บันทึกอาร์เรย์และคลาสแน่นอน ชั้นเรียนอาจซับซ้อนตามที่คุณต้องการให้เป็นรายการอาร์เรย์ (ทั่วไป) รายการย่อยบันทึก ฯลฯ ...
TCustomSerializer และลงทะเบียนคลาส Serializer ใหม่ในการกำหนดค่า ห้องสมุดนี้ได้รับการทดสอบกับ Delphi 12 Athens , Delphi 11 Alexandria , Delphi 10.4 Sydney , Delphi 10.3 Rio , Delphi 10.2 Tokyo แต่ด้วยจำนวนงานขั้นต่ำควรรวบรวมกับ Delphi XE7 และสูงกว่าและสูงกว่า
ห้องสมุดนี้ไม่มีการพึ่งพาห้องสมุด/หน่วยภายนอก
ใช้หน่วย Delphi:
เพียงเพิ่มเส้นทาง "แหล่งที่มา" ไปยังเส้นทางโครงการ Delphi ของคุณและ .. คุณพร้อมที่จะไป!
วิธีที่ง่ายที่สุดในการทำให้เป็นอนุกรมและ deserialize คือการใช้คลาสยูทิลิตี้ TNeon :
การทำให้เป็นอนุกรมวัตถุ:
var
LJSON: TJSONValue;
begin
LJSON := TNeon.ObjectToJSON(AObject);
try
Memo1.Lines.Text := TNeon.Print(LJSON, True);
finally
LJSON.Free;
end ;
end ;วัตถุ deserialization:
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 ;วัตถุ deserialization:
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 ;