
Neon es una biblioteca de serialización para Delphi que le ayuda a convertir (de ida y vuelta) objetos y otros valores a JSON. Admite tipos simples de Delphi pero también de clase y registros complejos. El neón ha sido diseñado con REST en mente, para intercambiar datos puros entre aplicaciones sin "metadatos" o campos agregados, de hecho, Neon es el motor de serialización JSON predeterminado para la biblioteca WILL REST.
Por favor, eche un vistazo a las demostraciones para ver el neón en acción.
Esta es la demostración principal en la que puede ver cómo puede serializar/deserializar tipos simples, registros, clases, tipos específicos de Delphi (TStringList, TDataset, etc.):

Esta nueva demostración trata de comparar el motor de serialización TJSON estándar con el motor Tneon, con algunos cambios que puede comparar TNEON con otros motores de serialización:

Configuración extensa a través de la interfaz INeonConfiguration :
Neon admite la (DE) serialización de la mayoría de los tipos estándar de Delphi, registros, matrices y, por supuesto, clases. Las clases pueden ser complejas como desee, pueden contener una matriz, listas (genéricas), subclases, registros, etc.
TCustomSerializer y registrar la nueva clase de serializador en la configuración Esta biblioteca ha sido probada con Delphi 12 Atenas , Delphi 11 Alexandria , Delphi 10.4 Sydney , Delphi 10.3 Río , Delphi 10.2 Tokio , pero con una cantidad mínima de trabajo debe compilarse con Delphi XE7 y más alto y más alto
Esta biblioteca no tiene dependencias en bibliotecas/unidades externas.
Unidades de Delphi utilizadas:
Simplemente agregue la ruta de origen "Fuente" a su ruta del proyecto Delphi y ... ¡está listo para comenzar!
La forma más fácil de serializar y deserializar es usar la clase de utilidad TNeon :
Serialización del objeto:
var
LJSON: TJSONValue;
begin
LJSON := TNeon.ObjectToJSON(AObject);
try
Memo1.Lines.Text := TNeon.Print(LJSON, True);
finally
LJSON.Free;
end ;
end ;Deserialización del objeto:
var
LJSON: TJSONValue;
begin
LJSON := TJSONObject.ParseJSONValue(Memo1.Lines.Text);
try
TNeon.JSONToObject(AObject, LJSON, AConfig);
finally
LJSON.Free;
end ; Usando las clases TNeonSerializerJSON y TNeonDeserializerJSON , tiene más control sobre el proceso.
Serialización del objeto:
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 ;Deserialización del objeto:
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 ;Es muy fácil configurar neón ,
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 ;