
DataSet Serialize - это набор функций для облегчения работы с JSON и DataSet. Он имеет такие функции, как экспорт или импорт записей в набор данных, проверьте, если у JSON есть все необходимые атрибуты (ранее введенные в набор данных), экспорт или импорт структуры полей набора данных в формате JSON. В дополнение к управлению вложенным JSON с помощью основных деталей или использования Tdatasetfield (вы выбираете способ, который подходит вам лучше всего). Все это с использованием помощников класса, что делает его еще проще и проще в использовании.
[Optional] Для легкого я рекомендую использовать Boss (Deving Manager для Delphi) для установки, просто запустив команду ниже на терминале (например, Windows PowerShell): boss install github.com/viniciussanchez/dataset-serialize
Если вы решите установить вручную, просто добавьте следующие папки в свой проект, в проекте> Параметры> «Строительство»> «Компилятор Delphi»> «Путь поиска»
../dataset-serialize/src
Все функции, предлагаемые набором данных Serialize, расположены в The Class Helper в устройстве. Чтобы начать свой проект, просто добавьте свою ссылку, где необходима ваша функциональность. Вот пример:
uses DataSet.Serialize;Давайте теперь посмотрим на каждую функцию, ее правила и особенности, чтобы доставить лучшее для всех пользователей.
Создание объекта JSON с информацией из записи набора данных кажется очень простой задачей. Но эта задача стала легче. DataSet Serialize имеет две функции для этого, а именно TojsonObject и TojsonArray. Давайте посмотрим на использование функций:
var
LJSONArray: TJSONArray;
LJSONObject: TJSONObject;
begin
LJSONObject := qrySamples.ToJSONObject(); // export a single record
LJSONArray := qrySamples.ToJSONArray(); // export all records
end ;В чем разница между двумя функциями? TojsonObject будет конвертировать только текущую запись набора данных в TJSonObject. Tojsonarray будет преобразовать в TJsonArray все записи набора данных, а не только выбранную запись.
Параметры
AChildRecords - указывает, экспортировать ли детские записи (с помощью Master Detail или Tdatasetfield).AOnlyUpdatedRecords - указывает, следует ли экспортировать только записи, которые были изменены (записи добавлены, изменены или удалены). Эта функция доступна только при использовании FireDac. Свойство Cachedupdates должно быть правдой;TojsonObject
{} );Tojsonarray
[] );Не очень полезная, но важная функция - Savestructure и LoadStructure. Как уже говорилось в названии, можно сохранить всю структуру полей, настроенных в наборе данных, а также загрузить структуру в формате 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 в качестве параметра.Спаситель
[] );LoadStructure
Функция ValidateJson очень полезна, когда мы хотим проверить на сервере, например, если у JSON, который мы получили в запросе, есть вся необходимая информация. Практически все поля в наборе данных проходят, проверяя, были ли введены необходимые поля в JSON. Если поле необходимо и не было введено в JSON, оно будет добавлено в массив JSON, возвращенный функцией. См. Пример ниже:
begin
LJSONArray := qrySamples.ValidateJSON( ' {"country":"Brazil"} ' );
end ; После получения {"country": "Brazil"} , если при условии, что наш набор данных имеет 3 поля (ID, First_Name, страна), и поля ID и First_Name будет возвращено следующее: будет возвращено следующее:
[{"field":"id","error":"Id not informed"},{"field":"firstName","error":"Name not informed"}]
Параметры
ALang - ответственный за изменение языка, используемого в Ассамблеи сообщений (по умолчанию английский);AOwns - указывает, кто несет ответственность за уничтожение пропущенного JSON в качестве параметра;ValidateJson
[] );DataSet Serializa позволяет загружать набор данных с помощью JSonObject, JSONArray и даже вложенного JSON, все обобщенные в одном методе: LoadFromJson (). Вот пример того, как его использовать:
begin
qrySamples.LoadFromJSON( ' {"firstName":"Vinicius Sanchez","country":"Brazil"} ' );
end ;Параметры
AOwns - указывает, кто несет ответственность за уничтожение пропущенного JSON в качестве параметра;Loadfromjson
С помощью набора данных Serialize вы все равно можете изменить регистрацию набора данных, просто используя MergeFromJsonObject. Функция похожа на LoadfromJson. Примером использования является серверы REST, когда глагол, используемый в запросе (не обязательно), в этом случае мы не хотим включать новую запись, а для изменения текущей записи.
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.
В одиночку мы идем быстрее. Вместе мы идем дальше.