
Neon est une bibliothèque de sérialisation pour Delphi qui vous aide à convertir (va-et-vient) des objets et d'autres valeurs en JSON. Il prend en charge les types de Delphi simples mais également les classes et les enregistrements complexes. Le néon a été conçu en pensant à Rest in Opward , pour échanger des données pures entre les applications sans "métadonnées" ou des champs ajoutés, en fait, le néon est le moteur de sérialisation JSON par défaut pour la bibliothèque WIRL REST.
Jetez un œil aux démos pour voir le néon en action.
Ceci est la démo principale où vous pouvez voir comment vous pouvez sérialiser / désérialiser des types simples, des enregistrements, des classes, des types spécifiques de Delphi (TStringList, Tdataset, etc ...):

Cette nouvelle démo essaie de comparer le moteur de sérialisation TJSON standard avec le moteur Tneon, avec quelques modifications que vous pouvez comparer Tneon avec d'autres moteurs de sérialisation:

Configuration étendue via l'interface INeonConfiguration :
Neon prend en charge la sérialisation (DE) de la plupart des types de standard de Delphi, des enregistrements, de la table et des classes bien sûr. Les classes peuvent être complexes comme vous le souhaitez, peuvent contenir un tableau, (générique), des sous-classes, des enregistrements, etc ...
TCustomSerializer et enregistrer la nouvelle classe de sérialiseur dans la configuration Cette bibliothèque a été testée avec Delphi 12 Athènes , Delphi 11 Alexandria , Delphi 10.4 Sydney , Delphi 10.3 Rio , Delphi 10.2 Tokyo , mais avec une quantité minimale de travail, elle devrait compiler avec Delphi Xe7 et plus
Cette bibliothèque n'a aucune dépendance sur les bibliothèques / unités externes.
Unités de Delphi utilisées:
Ajoutez simplement le chemin source "source" à votre chemin de projet Delphi et .. vous êtes prêt à partir!
Le moyen le plus simple de sérialiser et de désérialiser est d'utiliser le cours d'utilité TNeon :
Sérialisation des objets:
var
LJSON: TJSONValue;
begin
LJSON := TNeon.ObjectToJSON(AObject);
try
Memo1.Lines.Text := TNeon.Print(LJSON, True);
finally
LJSON.Free;
end ;
end ;Désérialisation des objets:
var
LJSON: TJSONValue;
begin
LJSON := TJSONObject.ParseJSONValue(Memo1.Lines.Text);
try
TNeon.JSONToObject(AObject, LJSON, AConfig);
finally
LJSON.Free;
end ; En utilisant les classes TNeonSerializerJSON et TNeonDeserializerJSON , vous avez plus de contrôle sur le processus.
Sérialisation des objets:
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 ;Désérialisation des objets:
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 ;Il est très facile de configurer le néon ,
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 ;