
Serialize Dataset adalah serangkaian fitur untuk membuat bekerja dengan JSON dan Dataset Simple. Ini memiliki fitur seperti mengekspor atau mengimpor catatan ke dalam dataset, validasi jika JSON memiliki semua atribut yang diperlukan (sebelumnya dimasukkan dalam dataset), mengekspor atau mengimpor struktur bidang dataset dalam format JSON. Selain mengelola JSON bersarang melalui detail master atau menggunakan Tdatasetfield (Anda memilih cara yang paling sesuai dengan Anda). Semua ini menggunakan kelas pembantu, yang membuatnya lebih sederhana dan lebih mudah digunakan.
[Optional] Untuk kemudahan saya sarankan menggunakan bos (Dependency Manager untuk Delphi) untuk instalasi, cukup dengan menjalankan perintah di bawah ini di terminal (Windows PowerShell misalnya): boss install github.com/viniciussanchez/dataset-serialize
Jika Anda memilih untuk menginstal secara manual, cukup tambahkan folder berikut ke proyek Anda, di Project> Opsi> Building> Delphi Compiler> Pencarian Path
../dataset-serialize/src
Semua fitur yang ditawarkan oleh Serialize Dataset terletak di Helper kelas di unit dataset.serialize. Untuk memulai proyek Anda, cukup tambahkan referensi Anda di mana fungsionalitas Anda diperlukan. Inilah contohnya:
uses DataSet.Serialize;Sekarang mari kita lihat setiap fitur, aturan dan kekhasannya, untuk memberikan yang terbaik kepada semua pengguna.
Membuat objek JSON dengan informasi dari catatan dataset sepertinya tugas yang sangat sederhana. Tapi tugas itu menjadi lebih mudah. Serialize Dataset memiliki dua fungsi untuk ini, yaitu TojsonObject dan TojsonArray. Mari kita lihat penggunaan fungsi:
var
LJSONArray: TJSONArray;
LJSONObject: TJSONObject;
begin
LJSONObject := qrySamples.ToJSONObject(); // export a single record
LJSONArray := qrySamples.ToJSONArray(); // export all records
end ;Apa perbedaan antara kedua fungsi? TOJSONObject hanya akan mengonversi catatan dataset saat ini ke TJSONObject. ToJsonArray akan mengonversi ke tjsonarray semua catatan dari dataset dan bukan hanya catatan yang dipilih.
Parameter
AChildRecords - Menunjukkan apakah akan mengekspor catatan anak atau tidak (melalui detail master atau tdatasetfield).AOnlyUpdatedRecords - Menunjukkan apakah hanya akan mengekspor catatan yang telah dimodifikasi (catatan ditambahkan, diubah, atau dihapus). Fitur ini hanya tersedia saat menggunakan FireDac. Properti Cachedupdates harus benar;TOJSONObject
{} ) akan dikembalikan;TOJSONArray
[] ) akan dikembalikan;Fitur yang tidak terlalu berguna tetapi penting adalah saveStructure dan muatan. Seperti namanya, dimungkinkan untuk menyimpan seluruh struktur bidang yang dikonfigurasi dalam dataset dan juga memuat struktur dalam format JSON. Berikut adalah contoh cara memuat dan mengekspor bidang dataset:
var
LJSONArray: TJSONArray;
begin
LJSONArray := qrySamples.SaveStructure;
qrySamples.LoadStructure(LJSONArray, True);
end ;Properti berikut dikendalikan:
Alignment, FieldName, DisplayLabel, DataType, Size, Key, Origin, Required, Visible, ReadOnly, and AutoGenerateValue ;
Parameter
AOwns - Menunjukkan siapa yang bertanggung jawab untuk menghancurkan JSON yang dilewati sebagai parameter.SaveStructure
[] ) akan dikembalikan;Struktur muat
Fungsi ValidateJson sangat berguna ketika kami ingin memvalidasi pada server misalnya jika JSON yang kami terima dalam permintaan memiliki semua informasi yang diperlukan. Secara praktis, semua bidang dalam dataset dilalui, memeriksa apakah bidang yang diperlukan dimasukkan dalam JSON. Jika bidang diperlukan dan belum dimasukkan dalam JSON, itu akan ditambahkan ke array JSON yang dikembalikan oleh fungsi tersebut. Lihat contoh di bawah ini:
begin
LJSONArray := qrySamples.ValidateJSON( ' {"country":"Brazil"} ' );
end ; Setelah menerima {"country": "Brazil"} , dengan asumsi dataset kami memiliki 3 bidang (ID, First_name, negara), dan bidang ID dan First_name diperlukan, berikut ini akan dikembalikan:
[{"field":"id","error":"Id not informed"},{"field":"firstName","error":"Name not informed"}]
Parameter
ALang - bertanggung jawab untuk mengubah bahasa yang digunakan dalam perakitan pesan (default adalah bahasa Inggris);AOwns - menunjukkan siapa yang bertanggung jawab untuk menghancurkan JSON yang dilewati sebagai parameter;Validasijson
[] ) dikembalikan;Dataset Serializa memungkinkan Anda memuat dataset dengan JSONObject, JsonArray dan bahkan JSON bersarang semuanya dirangkum dalam satu metode: LoadFromJson (). Berikut adalah contoh cara menggunakannya:
begin
qrySamples.LoadFromJSON( ' {"firstName":"Vinicius Sanchez","country":"Brazil"} ' );
end ;Parameter
AOwns - menunjukkan siapa yang bertanggung jawab untuk menghancurkan JSON yang dilewati sebagai parameter;LOADFROMJSON
Dengan serial dataset, Anda masih dapat mengubah pendaftaran dataset hanya dengan menggunakan MergefromjsonObject. Fungsi ini mirip dengan LoadFromJson. Contoh penggunaan adalah untuk server istirahat ketika kata kerja yang digunakan dalam permintaan dimasukkan (tidak harus), dalam hal ini kami tidak ingin memasukkan catatan baru tetapi untuk mengubah catatan saat ini.
begin
qrySamples.MergeFromJSONObject( ' {"firstName":"Vinicius","country":"United States"} ' );
end ;Parameter
AOwns - menunjukkan siapa yang bertanggung jawab untuk menghancurkan JSON yang dilewati sebagai parameter;MergefromjsonObject
Anda dapat menyesuaikan beberapa fitur 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 ' ];Lihatlah proyek sampel kami untuk setiap situasi yang disajikan di atas dalam operasi. Jika Anda memiliki pertanyaan atau saran, silakan hubungi, buat permintaan tarik Anda atau buat masalah.

DataSet-Serialize gratis dan perangkat lunak sumber terbuka yang dilisensikan di bawah lisensi MIT.
Sendirian kita pergi lebih cepat. Bersama -sama kita melangkah lebih jauh.