
Neonは、Delphiのシリアル化ライブラリであり、JSONに(前後)オブジェクトやその他の値を変換するのに役立ちます。シンプルなDelphiタイプだけでなく、複雑なクラスやレコードもサポートしています。ネオンは、「メタデータ」または追加されたフィールドのないアプリケーション間で純粋なデータを交換するために、 RESTを念頭に置いて設計されています。実際、 NeonはWirl RestライブラリのデフォルトのJSONシリアル化エンジンです。
デモを見て、ネオンが動作しているのを見てください。
これは、シンプルなタイプ、レコード、クラス、Delphi固有のタイプ(TStringList、TDATASETなど)をシリアル化/降下する方法を見ることができるメインデモです。

この新しいデモは、標準のTJSONシリアル化エンジンとTneonエンジンを比較しようとします。いくつかの変更で、Tneonを他のシリアル化エンジンと比較できます。

INeonConfigurationインターフェイスによる広範な構成:
Neonは、ほとんどのDelphi標準タイプ、レコード、配列、およびもちろんクラスの(DE)シリアル化をサポートしています。クラスは、あなたが望むように複雑にすることができ、アレイ、(一般的な)リスト、サブクラス、レコードなどを含めることができます...
TCustomSerializerから継承し、構成に新しいシリアナークラスを登録しますこのライブラリは、 Delphi 12 Athens 、 Delphi 11 Alexandria 、 Delphi 10.4 Sydney 、 Delphi 10.3 Rio 、 Delphi 10.2 Tokyoでテストされていますが、最低量の作業により、Delphi XE7以上でコンパイルする必要があります。
このライブラリには、外部ライブラリ/ユニットに依存関係がありません。
デルファイユニット使用:
ソースパス「ソース」をDelphiプロジェクトパスに追加するだけです。
シリアル化して脱皮化する最も簡単な方法は、 TNeonユーティリティクラスを使用することです。
オブジェクトシリアル化:
var
LJSON: TJSONValue;
begin
LJSON := TNeon.ObjectToJSON(AObject);
try
Memo1.Lines.Text := TNeon.Print(LJSON, True);
finally
LJSON.Free;
end ;
end ;オブジェクトの敏arialization:
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 ;オブジェクトの敏arialization:
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 ;