DataSet Serialize
用於Delphi和Lazarus (FPC)的JSON到數據集和數據集到JSON轉換器
源碼下載地址:https://github.com/viniciussanchez/dataset-serialize
uses DataSet.Serialize;
數據集序列為json
var LJSONArray: TJSONArray; LJSONObject: TJSONObject; begin LJSONObject := qrySamples.ToJSONObject(); // 導出單個記錄 LJSONArray := qrySamples.ToJSONArray(); // 導出所有記錄 end;
保存和加載數據集的結構
var LJSONArray: TJSONArray; begin LJSONArray := qrySamples.SaveStructure; qrySamples.LoadStructure(LJSONArray, True); end;
驗證json
begin LJSONArray := qrySamples.ValidateJSON('{"country":"Brazil"}'); end;
從json加載
begin qrySamples.LoadFromJSON('{"firstName":"Vinicius Sanchez","country":"Brazil"}'); end;
從JSON修改記錄
begin qrySamples.MergeFromJSONObject('{"firstName":"Vinicius","country":"United States"}'); end;
配置
- 日期輸入為UTC(時區)
TDataSetSerializeConfig.GetInstance.DateInputIsUTC := True;
- 導出空值
TDataSetSerializeConfig.GetInstance.export.ExportNullValues := True;
- 僅導出可見字段
TDataSetSerializeConfig.GetInstance.export.ExportOnlyFieldsVisible := True;
- 將子數據集導出為 JSON 對象(當您只有 1 條記錄時)
TDataSetSerializeConfig.GetInstance.export.ExportChildDataSetAsJsonObject := False;
- 僅導入可見的字段
TDataSetSerializeConfig.GetInstance.import.ImportOnlyFieldsVisible := True;
- 案例名稱定義
// cndNone, cndLower, cndUpper, cndLowerCamelCase, cndUpperCamelCase TDataSetSerializeConfig.GetInstance.CaseNameDefinition := cndLowerCamelCase; cndNone: [ { "MOB_ICADASTRO":11795,"MOB_EMI_REG":6,"CODIGODOCLIENTE":1,"CDOCUMEN1":"999999" } ] cndLower: [ { "mob_icadastro":11795,"mob_emi_"cododig6": :1,"cdocumen1":"999999" } ] cndUpper: [ { "MOB_ICADASTRO":11795,"MOB_EMI_REG":6,"CODIGODOCLIENTE":1,"CDOCUMEN1":"999999" } ] cndLowerCamelCase"mobIcadastro":11795,"mobEmiReg":6,"codigodocliente":1,"cdocumen1":"999999" } ] cndUpperCamelCase:: [ { "MobIcadastro":11795,"MobEmiReg":6,"Codigodocliente":1 "Cdocumen1":"999999" } ]
- 格式日期(導出字段類型等於 ftDate)
TDataSetSerializeConfig.GetInstance.export.FormatDate := ' YYYY-MM-DD ' ;
- 格式貨幣(導出字段類型等於 ftCurrency)
TDataSetSerializeConfig.GetInstance.export.FormatCurrency := ' 0.00## ' ;
- 定義數據集前綴
TDataSetSerializeConfig.GetInstance.DataSetPrefix := [ ' mt ' , ' qry ' ];