
Neon - это библиотека сериализации Delphi, которая помогает вам преобразовать (вперед и назад) объекты и другие значения в JSON. Он поддерживает простые типы Delphi, а также сложные классы и записи. Neon был разработан с учетом отдыха , чтобы обмениваться чистыми данными между приложениями без «метаданных» или добавленных полей, на самом деле Neon - это двигатель сериализации JSON по умолчанию для библиотеки отдыха.
Пожалуйста, посмотрите на демонстрации, чтобы увидеть Neon в действии.
Это основная демонстрация, где вы можете увидеть, как вы можете сериализовать/десериализовать простые типы, записи, классы, специфические типы Delphi (TStringList, Tdataset и т. Д.):

Эта новая демонстрация пытается сравнить стандартный двигатель сериализации 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, и ... вы готовы идти!
Самый простой способ сериализации и десеризации - это использовать утилиту 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 ;