delphi neon
Release 3.0.0

霓虹燈是Delphi的序列化庫,可幫助您將(來回)對象和其他值轉換為JSON。它支持簡單的Delphi類型,但也支持複雜的類和記錄。霓虹燈是考慮到休息的設計,是為了在沒有“元數據”或添加字段的應用程序之間交換純數據,實際上,霓虹燈是Wirl Rest庫的默認JSON序列化引擎。
請看一下演示,以查看霓虹燈的作用。
這是主要的演示,您可以在其中看到如何序列化/進行序列化簡單類型,記錄,類,delphi特定類型(tstringlist,tdataset等...):

這個新的演示試圖將標準TJSON序列化引擎與Tneon Engine進行比較,並進行了一些更改,您可以將Tneon與其他序列化引擎進行比較:

通過INeonConfiguration接口進行廣泛的配置:
NEON支持大多數Delphi標準類型,記錄,數組和類別的(DE)序列化。類可以像您想要的那樣複雜,可以包含數組,(通用)列表,子類,記錄等...
TCustomSerializer繼承並在配置中註冊新的序列化合物類該圖書館已與Delphi 12 Athens , Delphi 11 Alexandria , Delphi 10.4悉尼, Delphi 10.3 Rio , Delphi 10.2 Tokyo進行了測試
該庫對外部庫/單位沒有依賴關係。
使用的Delphi單位:
只需將源路徑“源”添加到您的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 ;