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 ;