
Neon 은 델파이를위한 직렬화 라이브러리로, 객체와 기타 값을 JSON으로 전환하는 데 도움이됩니다. 간단한 델파이 유형뿐만 아니라 복잡한 클래스 및 레코드도 지원합니다. Neon은 "메타 데이터" 또는 추가 필드가없는 응용 프로그램간에 순수한 데이터를 교환하도록 REST를 염두에두고 설계되었습니다. 실제로 Neon은 WIRL REST 라이브러리의 기본 JSON 직렬화 엔진입니다.
네온이 실제로 작동하는 모습을 보려면 데모를 살펴보십시오.
이것은 간단한 유형, 레코드, 클래스, 델파이 특정 유형 (tstringlist, tdataset 등)을 직렬화/사형화하는 방법을 볼 수있는 주요 데모입니다.

이 새로운 데모는 표준 TJSON 직렬화 엔진을 TNEON 엔진과 비교하려고 시도하며 몇 가지 변경 사항으로 TNEON을 다른 직렬화 엔진과 비교할 수 있습니다.

INeonConfiguration 인터페이스를 통한 광범위한 구성 :
Neon은 대부분의 델파이 표준 유형, 레코드, 배열 및 코스 클래스의 (DE) 직렬화를 지원합니다. 클래스는 원하는대로 복잡 할 수 있으며 배열, (제네릭) 목록, 하위 클래스, 레코드 등을 포함 할 수 있습니다 ...
TCustomSerializer 에서 상속하고 구성에 새 세리어 라이저 클래스를 등록하십시오. 이 도서관은 Delphi 12 Athens , Delphi 11 Alexandria , Delphi 10.4 Sydney , Delphi 10.3 Rio , Delphi 10.2 도쿄 에서 테스트되었지만 최소한의 작업을 사용하면 Delphi XE7 이상 으로 컴파일해야합니다.
이 라이브러리는 외부 라이브러리/장치에 의존하지 않습니다.
사용 된 델파이 장치 :
델파이 프로젝트 경로에 소스 경로 "소스"를 추가하면 ..
직렬화 및 사제화하는 가장 쉬운 방법은 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 ;