
Dataset Serializeは、JSONとデータセットをシンプルにするための一連の機能です。レコードをデータセットにエクスポートまたはインポートするなどの機能があり、JSONに必要な属性(以前にデータセットに入力された)がすべてjson形式のデータセットフィールドの構造をエクスポートまたはインポートしているかどうかを検証します。ネストされたJSONをマスターの詳細を介して管理することに加えて、またはTdatasetfieldを使用することに加えて(最適な方法を選択します)。これらすべてがクラスヘルパーを使用しているため、さらに簡単で使いやすくなります。
[Optional]簡単にするために、ターミナル(たとえばWindows PowerShell)で下にコマンドを実行するだけで、インストールにBoss (Dependency Manager)を使用することをお勧めします。 boss install github.com/viniciussanchez/dataset-serialize
手動でインストールすることを選択した場合は、プロジェクトに次のフォルダーをプロジェクトに追加してください> [オプション]> [構築]> [Delphiコンパイラ]> [検索パス]
../dataset-serialize/src
Dataset Serializeが提供するすべての機能は、Unit DataSet.Serializeのクラスヘルパーにあります。プロジェクトを開始するには、機能が必要な場所に参照を追加するだけです。これが例です:
uses DataSet.Serialize;次に、すべてのユーザーに最高のものを提供するために、各機能、そのルールと特異性を見てみましょう。
データセットレコードから情報を使用してJSONオブジェクトを作成することは、非常に単純なタスクのように思えます。しかし、そのタスクは簡単になりました。 Dataset Serializeには、TojsonObjectとtojsonArrayという2つの機能があります。関数の使用を見てみましょう。
var
LJSONArray: TJSONArray;
LJSONObject: TJSONObject;
begin
LJSONObject := qrySamples.ToJSONObject(); // export a single record
LJSONArray := qrySamples.ToJSONArray(); // export all records
end ;2つの関数の違いは何ですか? TojsonObjectは、現在のデータセットレコードをTJSonObjectにのみ変換します。 TojsonArrayは、選択したレコードだけでなく、データセットのすべてのレコードをTJSonArrayに変換します。
パラメーター
AChildRecords子の記録をエクスポートするかどうかを示します(マスターディテールまたはTDATASETFIELDを介して)。AOnlyUpdatedRecords変更されたレコードのみをエクスポートするかどうかを示します(レコードが追加、変更、または削除されました)。この機能は、FireDacを使用する場合にのみ使用できます。 cachedupdatesプロパティは真でなければなりません。tojsonobject
{} )が返されます。TojsonArray
[] )が返されます。あまり役に立たないが重要な特徴は、asaveStructureとloadtructureです。すでに述べたように、データセットで構成されたフィールドの構造全体を保存し、JSON形式の構造をロードすることも可能です。データセットフィールドをロードおよびエクスポートする方法の例は次のとおりです。
var
LJSONArray: TJSONArray;
begin
LJSONArray := qrySamples.SaveStructure;
qrySamples.LoadStructure(LJSONArray, True);
end ;次のプロパティが制御されています。
Alignment, FieldName, DisplayLabel, DataType, Size, Key, Origin, Required, Visible, ReadOnly, and AutoGenerateValue ;
パラメーター
AOwnsパラメーターとして渡されたJSONを破壊する責任者を示します。Savestructure
[] )が返されます。負荷構造
ValidateJson関数は、リクエストで受け取ったJSONに必要なすべての情報がある場合、サーバーで検証する場合に非常に便利です。実際には、データセット内のすべてのフィールドが横断されており、必要なフィールドがJSONに入力されているかどうかを確認します。フィールドが必要であり、JSONに入力されていない場合、関数によって返されるJSONアレイに追加されます。以下の例を参照してください。
begin
LJSONArray := qrySamples.ValidateJSON( ' {"country":"Brazil"} ' );
end ; {"country": "Brazil"}を受信すると、データセットに3つのフィールド(ID、first_name、country)があると仮定し、idとfirst_nameフィールドが必要です。
[{"field":"id","error":"Id not informed"},{"field":"firstName","error":"Name not informed"}]
パラメーター
ALangメッセージのアセンブリで使用される言語の変更を担当します(デフォルトは英語です)。AOwnsパラメーターとして渡されたJSONを破壊する責任者を示します。ValidateJson
[] )が返されます。Dataset Serializaを使用すると、JSonObject、JSonArray、さらにはネストされたJSONでデータセットをロードできます。すべて1つの方法で要約されています:LoadfromJson()。使用方法の例は次のとおりです。
begin
qrySamples.LoadFromJSON( ' {"firstName":"Vinicius Sanchez","country":"Brazil"} ' );
end ;パラメーター
AOwnsパラメーターとして渡されたJSONを破壊する責任者を示します。loadfromjson
DataSet Serializeを使用すると、MergeFromJsonObjectを使用するだけでデータセット登録を変更できます。この機能は、Loadfromjsonに似ています。使用の例は、リクエストで使用されている動詞が(必ずしもそうではない)場合のレストサーバーのためのものです。この場合、新しいレコードを含めるのではなく、現在のレコードを変更したいと考えています。
begin
qrySamples.MergeFromJSONObject( ' {"firstName":"Vinicius","country":"United States"} ' );
end ;パラメーター
AOwnsパラメーターとして渡されたJSONを破壊する責任者を示します。mergefromjsonobject
DataSet-Serializeのいくつかの機能をカスタマイズできます。
TDataSetSerializeConfig.GetInstance.DateInputIsUTC := True; TDataSetSerializeConfig.GetInstance. Export .ExportNullValues := True; TDataSetSerializeConfig.GetInstance. Export .TryConvertStringToJson := True; TDataSetSerializeConfig.GetInstance. Export .ExportOnlyFieldsVisible := True; TDataSetSerializeConfig.GetInstance. Export .ExportChildDataSetAsJsonObject := False; TDataSetSerializeConfig.GetInstance. Export .ExportLargeIntAsString := False; TDataSetSerializeConfig.GetInstance. Export .ExportBCDAsFloat := False; TDataSetSerializeConfig.GetInstance. Import .ImportOnlyFieldsVisible := True; TDataSetSerializeConfig.GetInstance. Import .DecodeBase64BlobField := True; TDataSetSerializeConfig.GetInstance.RemoveBlankSpaceFieldName := True; // default // cndNone, cndLower, cndUpper, cndLowerCamelCase, cndUpperCamelCase
TDataSetSerializeConfig.GetInstance.CaseNameDefinition := TCaseNameDefinition.cndLowerCamelCase;
TCaseNameDefinition.cndNone:
[ { "MOB_ICADASTRO":11795,"MOB_EMI_REG":6,"CODIGODOCLIENTE":1,"CDOCUMEN1":"999999" } ]
TCaseNameDefinition.cndLower:
[ { "mob_icadastro":11795,"mob_emi_reg":6,"codigodocliente":1,"cdocumen1":"999999" } ]
TCaseNameDefinition.cndUpper:
[ { "MOB_ICADASTRO":11795,"MOB_EMI_REG":6,"CODIGODOCLIENTE":1,"CDOCUMEN1":"999999" } ]
TCaseNameDefinition.cndLowerCamelCase:
[ { "mobIcadastro":11795,"mobEmiReg":6,"codigodocliente":1,"cdocumen1":"999999" } ]
TCaseNameDefinition.cndUpperCamelCase:
[ { "MobIcadastro":11795,"MobEmiReg":6,"Codigodocliente":1,"Cdocumen1":"999999" } ] TDataSetSerializeConfig.GetInstance. Export .FormatDate := ' YYYY-MM-DD ' ; TDataSetSerializeConfig.GetInstance. Export .FormatCurrency := ' 0.00## ' ; TDataSetSerializeConfig.GetInstance. Export .FormatFloat := ' ,0.00 ' ; TDataSetSerializeConfig.GetInstance.DataSetPrefix := [ ' mt ' , ' qry ' ];上記の動作中の各状況については、サンプルプロジェクトをご覧ください。ご質問や提案がある場合は、連絡、プルリクエストを行う、または問題を作成してください。

DataSet-Serialize MITライセンスに基づいてライセンスされている無料でオープンソースソフトウェアです。
一人でより速く行きます。一緒に私たちはさらに進みます。