├── .gitignore ├── Examples ├── delphi-middleware-horse │ ├── Samples.delphilsp.json │ ├── Samples.dpr │ ├── Samples.dproj │ ├── Samples.res │ └── Samples.stat └── delphi │ ├── JSONBr_Exemplo.dpr │ ├── JSONBr_Exemplo.dproj │ ├── JSONBr_Exemplo.res │ ├── JSONBr_Exemplo.stat │ ├── PUnit.dfm │ ├── PUnit.pas │ └── model.person.pas ├── README.md ├── Source ├── Core │ ├── jsonbr.builders.pas │ ├── jsonbr.reader.pas │ ├── jsonbr.utils.pas │ └── jsonbr.writer.pas ├── Middleware-Horse │ └── Horse.JsonBr.pas ├── jsonbr.inc └── jsonbr.pas ├── Test Delphi ├── JSONBr_Tests.dpr ├── JSONBr_Tests.dproj ├── JSONBr_Tests.identcache ├── JSONBr_Tests.pas ├── JSONBr_Tests.res ├── JSONBr_Tests.stat └── UnitTests.pas ├── Test Performance ├── Test.Consts.pas ├── Test.JSON.pas ├── Test.Model.pas ├── TestJSON.dpr ├── TestJSON.dproj ├── TestJSON.res ├── TestJSON.stat ├── test.json_br.pas ├── test.res_json.pas ├── test.xsuper.pas └── x-superobject │ ├── XSuperJSON.pas │ ├── XSuperObject.inc │ └── XSuperObject.pas ├── boss-lock.json ├── boss.json └── readme.txt /.gitignore: -------------------------------------------------------------------------------- 1 | # Add any directories, files, or patterns you don't want to be tracked by version control 2 | *.dcu 3 | *.bpl 4 | *.map 5 | *.json 6 | *.tvsconfig 7 | *.txaPackage 8 | *.local 9 | *.identcache 10 | __history/ 11 | __recovery/ 12 | Win32/ 13 | Win64/ -------------------------------------------------------------------------------- /Examples/delphi-middleware-horse/Samples.delphilsp.json: -------------------------------------------------------------------------------- 1 | { "settings": { "project": "file:///D%3A/PROJETOS-Brasil/JSONBr-Horse/samples/delphi/Samples.dpr", "dllname": "dcc32280.dll", "dccOptions": "-$O- -$W+ --no-config -Q -TX.exe -AGenerics.Collections=System.Generics.Collections;Generics.Defaults=System.Generics.Defaults;WinTypes=Winapi.Windows;WinProcs=Winapi.Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE -DDEBUG -E.\\Win32\\Debug -I\"c:\\program files (x86)\\embarcadero\\studio\\22.0\\lib\\Win32\\debug\";..\\..\\src;D:\\PROJETOS-Brasil\\Horse-IsaquePinheiro\\src;\"c:\\program files (x86)\\embarcadero\\studio\\22.0\\lib\\Win32\\release\";C:\\Users\\User\\OneDrive\\Pictures\\Documentos\\Embarcadero\\Studio\\22.0\\Imports;C:\\Users\\User\\OneDrive\\Pictures\\Documentos\\Embarcadero\\Studio\\22.0\\Imports\\Win32;\"c:\\program files (x86)\\embarcadero\\studio\\22.0\\Imports\";C:\\Users\\Public\\Documents\\Embarcadero\\Studio\\22.0\\Dcp;\"c:\\program files (x86)\\embarcadero\\studio\\22.0\\include\";Componentes\\fortesreport-ce\\Binary\\LibD25;\"D:\\Axial Componentes\\Fastreport 5 VCL Enterprise\\Libd25\";\\BarMenus\\Source;\\RXLib\\Source;\\SMCmpnt\\Source;\\Tecsis\\Source;\"D:\\Axial Componentes\\Ribbon\\source\\vcl\";\"D:\\Axial Componentes\\Ribbon\\lib\\win32\\release\";\"D:\\Axial Componentes\\Zeos\\src\\component\";\"D:\\Axial Componentes\\Zeos\\src\\core\";\"D:\\Axial Componentes\\Zeos\\src\\dbc\";\"D:\\Axial Componentes\\Zeos\\src\\parsesql\";\"D:\\Axial Componentes\\Zeos\\src\\plain\";\"D:\\Axial Componentes\\MARS\\Source\";\"D:\\Axial Componentes\\WiRL-master\\Source\\Client\";\"D:\\Axial Componentes\\WiRL-master\\Source\\Core\";\"D:\\Axial Componentes\\WiRL-master\\Source\\Data\";\"D:\\Axial Componentes\\WiRL-master\\Source\\Data\\FireDAC\";\"D:\\Axial Componentes\\WiRL-master\\Source\\Extensions\";\"D:\\Axial Componentes\\WiRL-master\\Source\\Messaging\";\"D:\\Axial Componentes\\delphi mvc\\sources\";\"D:\\Axial Componentes\\MARS\\ThirdParty\\mORMot\\Source\";\"D:\\Axial Componentes\\DSharp\\Source\\Aspects\";\"D:\\Axial Componentes\\DSharp\\Source\\Bindings\";\"D:\\Axial Componentes\\DSharp\\Source\\Collections\";\"D:\\Axial Componentes\\DSharp\\Source\\ComponentModel\";\"D:\\Axial Componentes\\DSharp\\Source\\Core\";\"D:\\Axial Componentes\\DSharp\\Source\\DelphiWebScript\";\"D:\\Axial Componentes\\DSharp\\Source\\DevExpress\";\"D:\\Axial Componentes\\DSharp\\Source\\Interception\";\"D:\\Axial Componentes\\DSharp\\Source\\Logging\";\"D:\\Axial Componentes\\DSharp\\Source\\PresentationModel\";\"D:\\Axial Componentes\\DSharp\\Source\\Testing\";\"D:\\Axial Componentes\\DSharp\\Source\\Windows\";\"D:\\Axial Componentes\\Spring4D\\Source\\Base\\Collections\";\"D:\\Axial Componentes\\Spring4D\\Source\";\"D:\\Axial Componentes\\Spring4D\\Source\\Base\";\"D:\\Axial Componentes\\UniDAC\\Source\";\"D:\\Axial Componentes\\UniDAC\\Source\\UniProviders\\MongoDB\";\"D:\\Axial Componentes\\WiRL-master\\Libs\\JWT\\Source\\JOSE\";\"D:\\Axial Componentes\\WiRL-master\\Libs\\JWT\\Source\\Common\";\"D:\\Axial Componentes\\Delphi MVC\\lib\\dmustache\";\"D:\\Axial Componentes\\Delphi MVC\\lib\\loggerpro\";C:\\Users\\isaque.pinheiro\\AppData\\Local\\Programs\\TestInsight\\Source;\"D:\\Axial Componentes\\Spring4D\\Source\\Data\";\"D:\\Axial Componentes\\Spring4D\\Source\\Data\\ObjectDataSet\";\"D:\\Axial Componentes\\FastReport 5 VCL Enterprise\\Source\\FireDAC\";\"D:\\Axial Componentes\\TMSBusiness\\Aurelius\\source\\drivers\";\"D:\\Axial Componentes\\TMSBusiness\\Aurelius\\source\\design\";\"D:\\Axial Componentes\\TMSBusiness\\Aurelius\\source\\core\";\"D:\\Axial Componentes\\TMSBusiness\\Aurelius\\source\";\"D:\\Axial Componentes\\TMSBusiness\\BusinesCoreLibrary\\source\\jose\\jose\";\"D:\\Axial Componentes\\TMSBusiness\\BusinesCoreLibrary\\source\\jose\\common\";\"D:\\Axial Componentes\\TMSBusiness\\BusinesCoreLibrary\\source\\jose\";\"D:\\Axial Componentes\\TMSBusiness\\BusinesCoreLibrary\\source\\design\";\"D:\\Axial Componentes\\Jedi\\Jvcl\\jvcl\\lib\\D25\\win32\";\"D:\\Axial Componentes\\Jedi\\Jvcl\\jvcl\\common\";\"D:\\Axial Componentes\\Jedi\\Jvcl\\jvcl\\Resources\";\"D:\\Axial Componentes\\Jedi\\Jcl\\jcl\\lib\\d25\\win32\";\"D:\\Axial Componentes\\Jedi\\Jcl\\jcl\\source\\include\";\"D:\\Delphi Tools\\Horse\\src\";D:\\PROJETOS-Brasil\\ORMBr\\Source\\Core;D:\\PROJETOS-Brasil\\CQLBr\\Source;D:\\PROJETOS-Brasil\\CQLBr\\Source\\Core;D:\\PROJETOS-Brasil\\CQLBr\\Source\\Drivers;D:\\PROJETOS-Brasil\\ORMBr\\Source\\Criteria;D:\\PROJETOS-Brasil\\ORMBr\\Source\\Dataset;D:\\PROJETOS-Brasil\\DBCBr\\Source;D:\\PROJETOS-Brasil\\DBCBr\\Source\\Core;D:\\PROJETOS-Brasil\\DBCBr\\Source\\Drivers;D:\\PROJETOS-Brasil\\DBEBr\\Source;D:\\PROJETOS-Brasil\\DBEBr\\Source\\Core;D:\\PROJETOS-Brasil\\DBEBr\\Source\\Drivers;D:\\PROJETOS-Brasil\\ORMBr\\Source\\External;D:\\PROJETOS-Brasil\\ORMBr\\Source\\External\\SQLite3;D:\\PROJETOS-Brasil\\JSONBr\\Source\\Core;D:\\PROJETOS-Brasil\\ORMBr\\Source\\Metadata;D:\\PROJETOS-Brasil\\ORMBr\\Source\\Middleware;D:\\PROJETOS-Brasil\\ORMBr\\Source\\Monitor;D:\\PROJETOS-Brasil\\ORMBr\\Source\\Objectset;D:\\PROJETOS-Brasil\\ORMBr\\Components\\Source;D:\\PROJETOS-Brasil\\ORMBr\\Components\\Source\\MongoWire;D:\\PROJETOS-Brasil\\ORMBr\\Source\\Livebindings;D:\\PROJETOS-Brasil\\ORMBr\\Source\\RESTful\\Client;D:\\PROJETOS-Brasil\\ORMBr\\Source\\RESTful\\Common;D:\\PROJETOS-Brasil\\ORMBr\\Source\\RESTful\\Server;D:\\ACBr2\\Lib\\Delphi\\LibD25\\Win32;\"D:\\Axial Componentes\\Swagger\\Source\\Core\";\"D:\\Axial Componentes\\Swagger\\Source\\Validator\";\"D:\\Axial Componentes\\Swagger\\Source\\Horse\";\"D:\\Axial Componentes\\Swagger\\Source\\Datasnap\";\"D:\\Axial Componentes\\Delphi MVC\\lib\\swagdoc\\Source\" -LEC:\\Users\\Public\\Documents\\Embarcadero\\Studio\\22.0\\Bpl -LNC:\\Users\\Public\\Documents\\Embarcadero\\Studio\\22.0\\Dcp -NU.\\Win32\\Debug -NSWinapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;Vcl;Vcl.Imaging;System;Xml;Data;Datasnap;Web;Soap; -O..\\..\\src;D:\\PROJETOS-Brasil\\Horse-IsaquePinheiro\\src;\"c:\\program files (x86)\\embarcadero\\studio\\22.0\\lib\\Win32\\release\";C:\\Users\\User\\OneDrive\\Pictures\\Documentos\\Embarcadero\\Studio\\22.0\\Imports;C:\\Users\\User\\OneDrive\\Pictures\\Documentos\\Embarcadero\\Studio\\22.0\\Imports\\Win32;\"c:\\program files (x86)\\embarcadero\\studio\\22.0\\Imports\";C:\\Users\\Public\\Documents\\Embarcadero\\Studio\\22.0\\Dcp;\"c:\\program files (x86)\\embarcadero\\studio\\22.0\\include\";Componentes\\fortesreport-ce\\Binary\\LibD25;\"D:\\Axial Componentes\\Fastreport 5 VCL Enterprise\\Libd25\";\\BarMenus\\Source;\\RXLib\\Source;\\SMCmpnt\\Source;\\Tecsis\\Source;\"D:\\Axial Componentes\\Ribbon\\source\\vcl\";\"D:\\Axial Componentes\\Ribbon\\lib\\win32\\release\";\"D:\\Axial Componentes\\Zeos\\src\\component\";\"D:\\Axial Componentes\\Zeos\\src\\core\";\"D:\\Axial Componentes\\Zeos\\src\\dbc\";\"D:\\Axial Componentes\\Zeos\\src\\parsesql\";\"D:\\Axial Componentes\\Zeos\\src\\plain\";\"D:\\Axial Componentes\\MARS\\Source\";\"D:\\Axial Componentes\\WiRL-master\\Source\\Client\";\"D:\\Axial Componentes\\WiRL-master\\Source\\Core\";\"D:\\Axial Componentes\\WiRL-master\\Source\\Data\";\"D:\\Axial Componentes\\WiRL-master\\Source\\Data\\FireDAC\";\"D:\\Axial Componentes\\WiRL-master\\Source\\Extensions\";\"D:\\Axial Componentes\\WiRL-master\\Source\\Messaging\";\"D:\\Axial Componentes\\delphi mvc\\sources\";\"D:\\Axial Componentes\\MARS\\ThirdParty\\mORMot\\Source\";\"D:\\Axial Componentes\\DSharp\\Source\\Aspects\";\"D:\\Axial Componentes\\DSharp\\Source\\Bindings\";\"D:\\Axial Componentes\\DSharp\\Source\\Collections\";\"D:\\Axial Componentes\\DSharp\\Source\\ComponentModel\";\"D:\\Axial Componentes\\DSharp\\Source\\Core\";\"D:\\Axial Componentes\\DSharp\\Source\\DelphiWebScript\";\"D:\\Axial Componentes\\DSharp\\Source\\DevExpress\";\"D:\\Axial Componentes\\DSharp\\Source\\Interception\";\"D:\\Axial Componentes\\DSharp\\Source\\Logging\";\"D:\\Axial Componentes\\DSharp\\Source\\PresentationModel\";\"D:\\Axial Componentes\\DSharp\\Source\\Testing\";\"D:\\Axial Componentes\\DSharp\\Source\\Windows\";\"D:\\Axial Componentes\\Spring4D\\Source\\Base\\Collections\";\"D:\\Axial Componentes\\Spring4D\\Source\";\"D:\\Axial Componentes\\Spring4D\\Source\\Base\";\"D:\\Axial Componentes\\UniDAC\\Source\";\"D:\\Axial Componentes\\UniDAC\\Source\\UniProviders\\MongoDB\";\"D:\\Axial Componentes\\WiRL-master\\Libs\\JWT\\Source\\JOSE\";\"D:\\Axial Componentes\\WiRL-master\\Libs\\JWT\\Source\\Common\";\"D:\\Axial Componentes\\Delphi MVC\\lib\\dmustache\";\"D:\\Axial Componentes\\Delphi MVC\\lib\\loggerpro\";C:\\Users\\isaque.pinheiro\\AppData\\Local\\Programs\\TestInsight\\Source;\"D:\\Axial Componentes\\Spring4D\\Source\\Data\";\"D:\\Axial Componentes\\Spring4D\\Source\\Data\\ObjectDataSet\";\"D:\\Axial Componentes\\FastReport 5 VCL Enterprise\\Source\\FireDAC\";\"D:\\Axial Componentes\\TMSBusiness\\Aurelius\\source\\drivers\";\"D:\\Axial Componentes\\TMSBusiness\\Aurelius\\source\\design\";\"D:\\Axial Componentes\\TMSBusiness\\Aurelius\\source\\core\";\"D:\\Axial Componentes\\TMSBusiness\\Aurelius\\source\";\"D:\\Axial Componentes\\TMSBusiness\\BusinesCoreLibrary\\source\\jose\\jose\";\"D:\\Axial Componentes\\TMSBusiness\\BusinesCoreLibrary\\source\\jose\\common\";\"D:\\Axial Componentes\\TMSBusiness\\BusinesCoreLibrary\\source\\jose\";\"D:\\Axial Componentes\\TMSBusiness\\BusinesCoreLibrary\\source\\design\";\"D:\\Axial Componentes\\Jedi\\Jvcl\\jvcl\\lib\\D25\\win32\";\"D:\\Axial Componentes\\Jedi\\Jvcl\\jvcl\\common\";\"D:\\Axial Componentes\\Jedi\\Jvcl\\jvcl\\Resources\";\"D:\\Axial Componentes\\Jedi\\Jcl\\jcl\\lib\\d25\\win32\";\"D:\\Axial Componentes\\Jedi\\Jcl\\jcl\\source\\include\";\"D:\\Delphi Tools\\Horse\\src\";D:\\PROJETOS-Brasil\\ORMBr\\Source\\Core;D:\\PROJETOS-Brasil\\CQLBr\\Source;D:\\PROJETOS-Brasil\\CQLBr\\Source\\Core;D:\\PROJETOS-Brasil\\CQLBr\\Source\\Drivers;D:\\PROJETOS-Brasil\\ORMBr\\Source\\Criteria;D:\\PROJETOS-Brasil\\ORMBr\\Source\\Dataset;D:\\PROJETOS-Brasil\\DBCBr\\Source;D:\\PROJETOS-Brasil\\DBCBr\\Source\\Core;D:\\PROJETOS-Brasil\\DBCBr\\Source\\Drivers;D:\\PROJETOS-Brasil\\DBEBr\\Source;D:\\PROJETOS-Brasil\\DBEBr\\Source\\Core;D:\\PROJETOS-Brasil\\DBEBr\\Source\\Drivers;D:\\PROJETOS-Brasil\\ORMBr\\Source\\External;D:\\PROJETOS-Brasil\\ORMBr\\Source\\External\\SQLite3;D:\\PROJETOS-Brasil\\JSONBr\\Source\\Core;D:\\PROJETOS-Brasil\\ORMBr\\Source\\Metadata;D:\\PROJETOS-Brasil\\ORMBr\\Source\\Middleware;D:\\PROJETOS-Brasil\\ORMBr\\Source\\Monitor;D:\\PROJETOS-Brasil\\ORMBr\\Source\\Objectset;D:\\PROJETOS-Brasil\\ORMBr\\Components\\Source;D:\\PROJETOS-Brasil\\ORMBr\\Components\\Source\\MongoWire;D:\\PROJETOS-Brasil\\ORMBr\\Source\\Livebindings;D:\\PROJETOS-Brasil\\ORMBr\\Source\\RESTful\\Client;D:\\PROJETOS-Brasil\\ORMBr\\Source\\RESTful\\Common;D:\\PROJETOS-Brasil\\ORMBr\\Source\\RESTful\\Server;D:\\ACBr2\\Lib\\Delphi\\LibD25\\Win32;\"D:\\Axial Componentes\\Swagger\\Source\\Core\";\"D:\\Axial Componentes\\Swagger\\Source\\Validator\";\"D:\\Axial Componentes\\Swagger\\Source\\Horse\";\"D:\\Axial Componentes\\Swagger\\Source\\Datasnap\";\"D:\\Axial Componentes\\Delphi MVC\\lib\\swagdoc\\Source\" -R..\\..\\src;D:\\PROJETOS-Brasil\\Horse-IsaquePinheiro\\src;\"c:\\program files (x86)\\embarcadero\\studio\\22.0\\lib\\Win32\\release\";C:\\Users\\User\\OneDrive\\Pictures\\Documentos\\Embarcadero\\Studio\\22.0\\Imports;C:\\Users\\User\\OneDrive\\Pictures\\Documentos\\Embarcadero\\Studio\\22.0\\Imports\\Win32;\"c:\\program files (x86)\\embarcadero\\studio\\22.0\\Imports\";C:\\Users\\Public\\Documents\\Embarcadero\\Studio\\22.0\\Dcp;\"c:\\program files (x86)\\embarcadero\\studio\\22.0\\include\";Componentes\\fortesreport-ce\\Binary\\LibD25;\"D:\\Axial Componentes\\Fastreport 5 VCL Enterprise\\Libd25\";\\BarMenus\\Source;\\RXLib\\Source;\\SMCmpnt\\Source;\\Tecsis\\Source;\"D:\\Axial Componentes\\Ribbon\\source\\vcl\";\"D:\\Axial Componentes\\Ribbon\\lib\\win32\\release\";\"D:\\Axial Componentes\\Zeos\\src\\component\";\"D:\\Axial Componentes\\Zeos\\src\\core\";\"D:\\Axial Componentes\\Zeos\\src\\dbc\";\"D:\\Axial Componentes\\Zeos\\src\\parsesql\";\"D:\\Axial Componentes\\Zeos\\src\\plain\";\"D:\\Axial Componentes\\MARS\\Source\";\"D:\\Axial Componentes\\WiRL-master\\Source\\Client\";\"D:\\Axial Componentes\\WiRL-master\\Source\\Core\";\"D:\\Axial Componentes\\WiRL-master\\Source\\Data\";\"D:\\Axial Componentes\\WiRL-master\\Source\\Data\\FireDAC\";\"D:\\Axial Componentes\\WiRL-master\\Source\\Extensions\";\"D:\\Axial Componentes\\WiRL-master\\Source\\Messaging\";\"D:\\Axial Componentes\\delphi mvc\\sources\";\"D:\\Axial Componentes\\MARS\\ThirdParty\\mORMot\\Source\";\"D:\\Axial Componentes\\DSharp\\Source\\Aspects\";\"D:\\Axial Componentes\\DSharp\\Source\\Bindings\";\"D:\\Axial Componentes\\DSharp\\Source\\Collections\";\"D:\\Axial Componentes\\DSharp\\Source\\ComponentModel\";\"D:\\Axial Componentes\\DSharp\\Source\\Core\";\"D:\\Axial Componentes\\DSharp\\Source\\DelphiWebScript\";\"D:\\Axial Componentes\\DSharp\\Source\\DevExpress\";\"D:\\Axial Componentes\\DSharp\\Source\\Interception\";\"D:\\Axial Componentes\\DSharp\\Source\\Logging\";\"D:\\Axial Componentes\\DSharp\\Source\\PresentationModel\";\"D:\\Axial Componentes\\DSharp\\Source\\Testing\";\"D:\\Axial Componentes\\DSharp\\Source\\Windows\";\"D:\\Axial Componentes\\Spring4D\\Source\\Base\\Collections\";\"D:\\Axial Componentes\\Spring4D\\Source\";\"D:\\Axial Componentes\\Spring4D\\Source\\Base\";\"D:\\Axial Componentes\\UniDAC\\Source\";\"D:\\Axial Componentes\\UniDAC\\Source\\UniProviders\\MongoDB\";\"D:\\Axial Componentes\\WiRL-master\\Libs\\JWT\\Source\\JOSE\";\"D:\\Axial Componentes\\WiRL-master\\Libs\\JWT\\Source\\Common\";\"D:\\Axial Componentes\\Delphi MVC\\lib\\dmustache\";\"D:\\Axial Componentes\\Delphi MVC\\lib\\loggerpro\";C:\\Users\\isaque.pinheiro\\AppData\\Local\\Programs\\TestInsight\\Source;\"D:\\Axial Componentes\\Spring4D\\Source\\Data\";\"D:\\Axial Componentes\\Spring4D\\Source\\Data\\ObjectDataSet\";\"D:\\Axial Componentes\\FastReport 5 VCL Enterprise\\Source\\FireDAC\";\"D:\\Axial Componentes\\TMSBusiness\\Aurelius\\source\\drivers\";\"D:\\Axial Componentes\\TMSBusiness\\Aurelius\\source\\design\";\"D:\\Axial Componentes\\TMSBusiness\\Aurelius\\source\\core\";\"D:\\Axial Componentes\\TMSBusiness\\Aurelius\\source\";\"D:\\Axial Componentes\\TMSBusiness\\BusinesCoreLibrary\\source\\jose\\jose\";\"D:\\Axial Componentes\\TMSBusiness\\BusinesCoreLibrary\\source\\jose\\common\";\"D:\\Axial Componentes\\TMSBusiness\\BusinesCoreLibrary\\source\\jose\";\"D:\\Axial Componentes\\TMSBusiness\\BusinesCoreLibrary\\source\\design\";\"D:\\Axial Componentes\\Jedi\\Jvcl\\jvcl\\lib\\D25\\win32\";\"D:\\Axial Componentes\\Jedi\\Jvcl\\jvcl\\common\";\"D:\\Axial Componentes\\Jedi\\Jvcl\\jvcl\\Resources\";\"D:\\Axial Componentes\\Jedi\\Jcl\\jcl\\lib\\d25\\win32\";\"D:\\Axial Componentes\\Jedi\\Jcl\\jcl\\source\\include\";\"D:\\Delphi Tools\\Horse\\src\";D:\\PROJETOS-Brasil\\ORMBr\\Source\\Core;D:\\PROJETOS-Brasil\\CQLBr\\Source;D:\\PROJETOS-Brasil\\CQLBr\\Source\\Core;D:\\PROJETOS-Brasil\\CQLBr\\Source\\Drivers;D:\\PROJETOS-Brasil\\ORMBr\\Source\\Criteria;D:\\PROJETOS-Brasil\\ORMBr\\Source\\Dataset;D:\\PROJETOS-Brasil\\DBCBr\\Source;D:\\PROJETOS-Brasil\\DBCBr\\Source\\Core;D:\\PROJETOS-Brasil\\DBCBr\\Source\\Drivers;D:\\PROJETOS-Brasil\\DBEBr\\Source;D:\\PROJETOS-Brasil\\DBEBr\\Source\\Core;D:\\PROJETOS-Brasil\\DBEBr\\Source\\Drivers;D:\\PROJETOS-Brasil\\ORMBr\\Source\\External;D:\\PROJETOS-Brasil\\ORMBr\\Source\\External\\SQLite3;D:\\PROJETOS-Brasil\\JSONBr\\Source\\Core;D:\\PROJETOS-Brasil\\ORMBr\\Source\\Metadata;D:\\PROJETOS-Brasil\\ORMBr\\Source\\Middleware;D:\\PROJETOS-Brasil\\ORMBr\\Source\\Monitor;D:\\PROJETOS-Brasil\\ORMBr\\Source\\Objectset;D:\\PROJETOS-Brasil\\ORMBr\\Components\\Source;D:\\PROJETOS-Brasil\\ORMBr\\Components\\Source\\MongoWire;D:\\PROJETOS-Brasil\\ORMBr\\Source\\Livebindings;D:\\PROJETOS-Brasil\\ORMBr\\Source\\RESTful\\Client;D:\\PROJETOS-Brasil\\ORMBr\\Source\\RESTful\\Common;D:\\PROJETOS-Brasil\\ORMBr\\Source\\RESTful\\Server;D:\\ACBr2\\Lib\\Delphi\\LibD25\\Win32;\"D:\\Axial Componentes\\Swagger\\Source\\Core\";\"D:\\Axial Componentes\\Swagger\\Source\\Validator\";\"D:\\Axial Componentes\\Swagger\\Source\\Horse\";\"D:\\Axial Componentes\\Swagger\\Source\\Datasnap\";\"D:\\Axial Componentes\\Delphi MVC\\lib\\swagdoc\\Source\" -U\"c:\\program files (x86)\\embarcadero\\studio\\22.0\\lib\\Win32\\debug\";..\\..\\src;D:\\PROJETOS-Brasil\\Horse-IsaquePinheiro\\src;\"c:\\program files (x86)\\embarcadero\\studio\\22.0\\lib\\Win32\\release\";C:\\Users\\User\\OneDrive\\Pictures\\Documentos\\Embarcadero\\Studio\\22.0\\Imports;C:\\Users\\User\\OneDrive\\Pictures\\Documentos\\Embarcadero\\Studio\\22.0\\Imports\\Win32;\"c:\\program files (x86)\\embarcadero\\studio\\22.0\\Imports\";C:\\Users\\Public\\Documents\\Embarcadero\\Studio\\22.0\\Dcp;\"c:\\program files (x86)\\embarcadero\\studio\\22.0\\include\";Componentes\\fortesreport-ce\\Binary\\LibD25;\"D:\\Axial Componentes\\Fastreport 5 VCL Enterprise\\Libd25\";\\BarMenus\\Source;\\RXLib\\Source;\\SMCmpnt\\Source;\\Tecsis\\Source;\"D:\\Axial Componentes\\Ribbon\\source\\vcl\";\"D:\\Axial Componentes\\Ribbon\\lib\\win32\\release\";\"D:\\Axial Componentes\\Zeos\\src\\component\";\"D:\\Axial Componentes\\Zeos\\src\\core\";\"D:\\Axial Componentes\\Zeos\\src\\dbc\";\"D:\\Axial Componentes\\Zeos\\src\\parsesql\";\"D:\\Axial Componentes\\Zeos\\src\\plain\";\"D:\\Axial Componentes\\MARS\\Source\";\"D:\\Axial Componentes\\WiRL-master\\Source\\Client\";\"D:\\Axial Componentes\\WiRL-master\\Source\\Core\";\"D:\\Axial Componentes\\WiRL-master\\Source\\Data\";\"D:\\Axial Componentes\\WiRL-master\\Source\\Data\\FireDAC\";\"D:\\Axial Componentes\\WiRL-master\\Source\\Extensions\";\"D:\\Axial Componentes\\WiRL-master\\Source\\Messaging\";\"D:\\Axial Componentes\\delphi mvc\\sources\";\"D:\\Axial Componentes\\MARS\\ThirdParty\\mORMot\\Source\";\"D:\\Axial Componentes\\DSharp\\Source\\Aspects\";\"D:\\Axial Componentes\\DSharp\\Source\\Bindings\";\"D:\\Axial Componentes\\DSharp\\Source\\Collections\";\"D:\\Axial Componentes\\DSharp\\Source\\ComponentModel\";\"D:\\Axial Componentes\\DSharp\\Source\\Core\";\"D:\\Axial Componentes\\DSharp\\Source\\DelphiWebScript\";\"D:\\Axial Componentes\\DSharp\\Source\\DevExpress\";\"D:\\Axial Componentes\\DSharp\\Source\\Interception\";\"D:\\Axial Componentes\\DSharp\\Source\\Logging\";\"D:\\Axial Componentes\\DSharp\\Source\\PresentationModel\";\"D:\\Axial Componentes\\DSharp\\Source\\Testing\";\"D:\\Axial Componentes\\DSharp\\Source\\Windows\";\"D:\\Axial Componentes\\Spring4D\\Source\\Base\\Collections\";\"D:\\Axial Componentes\\Spring4D\\Source\";\"D:\\Axial Componentes\\Spring4D\\Source\\Base\";\"D:\\Axial Componentes\\UniDAC\\Source\";\"D:\\Axial Componentes\\UniDAC\\Source\\UniProviders\\MongoDB\";\"D:\\Axial Componentes\\WiRL-master\\Libs\\JWT\\Source\\JOSE\";\"D:\\Axial Componentes\\WiRL-master\\Libs\\JWT\\Source\\Common\";\"D:\\Axial Componentes\\Delphi MVC\\lib\\dmustache\";\"D:\\Axial Componentes\\Delphi MVC\\lib\\loggerpro\";C:\\Users\\isaque.pinheiro\\AppData\\Local\\Programs\\TestInsight\\Source;\"D:\\Axial Componentes\\Spring4D\\Source\\Data\";\"D:\\Axial Componentes\\Spring4D\\Source\\Data\\ObjectDataSet\";\"D:\\Axial Componentes\\FastReport 5 VCL Enterprise\\Source\\FireDAC\";\"D:\\Axial Componentes\\TMSBusiness\\Aurelius\\source\\drivers\";\"D:\\Axial Componentes\\TMSBusiness\\Aurelius\\source\\design\";\"D:\\Axial Componentes\\TMSBusiness\\Aurelius\\source\\core\";\"D:\\Axial Componentes\\TMSBusiness\\Aurelius\\source\";\"D:\\Axial Componentes\\TMSBusiness\\BusinesCoreLibrary\\source\\jose\\jose\";\"D:\\Axial Componentes\\TMSBusiness\\BusinesCoreLibrary\\source\\jose\\common\";\"D:\\Axial Componentes\\TMSBusiness\\BusinesCoreLibrary\\source\\jose\";\"D:\\Axial Componentes\\TMSBusiness\\BusinesCoreLibrary\\source\\design\";\"D:\\Axial Componentes\\Jedi\\Jvcl\\jvcl\\lib\\D25\\win32\";\"D:\\Axial Componentes\\Jedi\\Jvcl\\jvcl\\common\";\"D:\\Axial Componentes\\Jedi\\Jvcl\\jvcl\\Resources\";\"D:\\Axial Componentes\\Jedi\\Jcl\\jcl\\lib\\d25\\win32\";\"D:\\Axial Componentes\\Jedi\\Jcl\\jcl\\source\\include\";\"D:\\Delphi Tools\\Horse\\src\";D:\\PROJETOS-Brasil\\ORMBr\\Source\\Core;D:\\PROJETOS-Brasil\\CQLBr\\Source;D:\\PROJETOS-Brasil\\CQLBr\\Source\\Core;D:\\PROJETOS-Brasil\\CQLBr\\Source\\Drivers;D:\\PROJETOS-Brasil\\ORMBr\\Source\\Criteria;D:\\PROJETOS-Brasil\\ORMBr\\Source\\Dataset;D:\\PROJETOS-Brasil\\DBCBr\\Source;D:\\PROJETOS-Brasil\\DBCBr\\Source\\Core;D:\\PROJETOS-Brasil\\DBCBr\\Source\\Drivers;D:\\PROJETOS-Brasil\\DBEBr\\Source;D:\\PROJETOS-Brasil\\DBEBr\\Source\\Core;D:\\PROJETOS-Brasil\\DBEBr\\Source\\Drivers;D:\\PROJETOS-Brasil\\ORMBr\\Source\\External;D:\\PROJETOS-Brasil\\ORMBr\\Source\\External\\SQLite3;D:\\PROJETOS-Brasil\\JSONBr\\Source\\Core;D:\\PROJETOS-Brasil\\ORMBr\\Source\\Metadata;D:\\PROJETOS-Brasil\\ORMBr\\Source\\Middleware;D:\\PROJETOS-Brasil\\ORMBr\\Source\\Monitor;D:\\PROJETOS-Brasil\\ORMBr\\Source\\Objectset;D:\\PROJETOS-Brasil\\ORMBr\\Components\\Source;D:\\PROJETOS-Brasil\\ORMBr\\Components\\Source\\MongoWire;D:\\PROJETOS-Brasil\\ORMBr\\Source\\Livebindings;D:\\PROJETOS-Brasil\\ORMBr\\Source\\RESTful\\Client;D:\\PROJETOS-Brasil\\ORMBr\\Source\\RESTful\\Common;D:\\PROJETOS-Brasil\\ORMBr\\Source\\RESTful\\Server;D:\\ACBr2\\Lib\\Delphi\\LibD25\\Win32;\"D:\\Axial Componentes\\Swagger\\Source\\Core\";\"D:\\Axial Componentes\\Swagger\\Source\\Validator\";\"D:\\Axial Componentes\\Swagger\\Source\\Horse\";\"D:\\Axial Componentes\\Swagger\\Source\\Datasnap\";\"D:\\Axial Componentes\\Delphi MVC\\lib\\swagdoc\\Source\" -CC -V -VN -NBC:\\Users\\Public\\Documents\\Embarcadero\\Studio\\22.0\\Dcp -NHC:\\Users\\Public\\Documents\\Embarcadero\\Studio\\22.0\\hpp\\Win32 -NO.\\Win32\\Debug -LU" , "projectFiles":[ ] , "includeDCUsInUsesCompletion": true, "browsingPaths": [ "file:///c%3A/program%20files%20%28x86%29/embarcadero/studio/22.0/OCX/Servers","file:///c%3A/program%20files%20%28x86%29/embarcadero/studio/22.0/SOURCE/VCL","file:///c%3A/program%20files%20%28x86%29/embarcadero/studio/22.0/source/rtl/common","file:///c%3A/program%20files%20%28x86%29/embarcadero/studio/22.0/SOURCE/RTL/SYS","file:///c%3A/program%20files%20%28x86%29/embarcadero/studio/22.0/source/rtl/win","file:///c%3A/program%20files%20%28x86%29/embarcadero/studio/22.0/source/rtl/win/winrt","file:///c%3A/program%20files%20%28x86%29/embarcadero/studio/22.0/source/ToolsAPI","file:///c%3A/program%20files%20%28x86%29/embarcadero/studio/22.0/SOURCE/IBX","file:///c%3A/program%20files%20%28x86%29/embarcadero/studio/22.0/source/Internet","file:///c%3A/program%20files%20%28x86%29/embarcadero/studio/22.0/SOURCE/PROPERTY%20EDITORS","file:///c%3A/program%20files%20%28x86%29/embarcadero/studio/22.0/source/soap","file:///c%3A/program%20files%20%28x86%29/embarcadero/studio/22.0/SOURCE/XML","file:///c%3A/program%20files%20%28x86%29/embarcadero/studio/22.0/source/Indy10/Core","file:///c%3A/program%20files%20%28x86%29/embarcadero/studio/22.0/source/Indy10/System","file:///c%3A/program%20files%20%28x86%29/embarcadero/studio/22.0/source/Indy10/Protocols","file:///c%3A/program%20files%20%28x86%29/embarcadero/studio/22.0/source/fmx","file:///c%3A/program%20files%20%28x86%29/embarcadero/studio/22.0/source/databinding/components","file:///c%3A/program%20files%20%28x86%29/embarcadero/studio/22.0/source/databinding/engine","file:///c%3A/program%20files%20%28x86%29/embarcadero/studio/22.0/source/databinding/graph","file:///c%3A/program%20files%20%28x86%29/embarcadero/studio/22.0/source/data","file:///c%3A/program%20files%20%28x86%29/embarcadero/studio/22.0/source/data/ado","file:///c%3A/program%20files%20%28x86%29/embarcadero/studio/22.0/source/data/cloud","file:///c%3A/program%20files%20%28x86%29/embarcadero/studio/22.0/source/data/datasnap","file:///c%3A/program%20files%20%28x86%29/embarcadero/studio/22.0/source/data/dbx","file:///c%3A/program%20files%20%28x86%29/embarcadero/studio/22.0/source/data/dsnap","file:///c%3A/program%20files%20%28x86%29/embarcadero/studio/22.0/source/data/vclctrls","file:///c%3A/program%20files%20%28x86%29/embarcadero/studio/22.0/source/data/datasnap/connectors","file:///c%3A/program%20files%20%28x86%29/embarcadero/studio/22.0/source/data/datasnap/proxygen","file:///c%3A/program%20files%20%28x86%29/embarcadero/studio/22.0/source/DataExplorer","file:///c%3A/program%20files%20%28x86%29/embarcadero/studio/22.0/source/DUnit/Contrib/DUnitWizard/Source/Common","file:///c%3A/program%20files%20%28x86%29/embarcadero/studio/22.0/source/DUnit/Contrib/DUnitWizard/Source/Common/dunit","file:///c%3A/program%20files%20%28x86%29/embarcadero/studio/22.0/source/DUnit/Contrib/DUnitWizard/Source/DelphiExperts/Common","file:///c%3A/program%20files%20%28x86%29/embarcadero/studio/22.0/source/DUnit/Contrib/DUnitWizard/Source/DelphiExperts/DUnitProject","file:///c%3A/program%20files%20%28x86%29/embarcadero/studio/22.0/source/DUnit/Contrib/DUnitWizard/Source/DelphiExperts/DUnitProject/dunit","file:///c%3A/program%20files%20%28x86%29/embarcadero/studio/22.0/source/DUnit/src","file:///c%3A/program%20files%20%28x86%29/embarcadero/studio/22.0/source/DUnit/tests","file:///c%3A/program%20files%20%28x86%29/embarcadero/studio/22.0/source/Experts","file:///c%3A/program%20files%20%28x86%29/embarcadero/studio/22.0/source/indy/abstraction","file:///c%3A/program%20files%20%28x86%29/embarcadero/studio/22.0/source/indy/implementation","file:///c%3A/program%20files%20%28x86%29/embarcadero/studio/22.0/source/indyimpl","file:///c%3A/program%20files%20%28x86%29/embarcadero/studio/22.0/source/Property%20Editors/Indy10","file:///c%3A/program%20files%20%28x86%29/embarcadero/studio/22.0/source/soap/wsdlimporter","file:///c%3A/program%20files%20%28x86%29/embarcadero/studio/22.0/source/Visualizers","file:///c%3A/program%20files%20%28x86%29/embarcadero/studio/22.0/source/DUnit/Contrib/XMLReporting","file:///c%3A/program%20files%20%28x86%29/embarcadero/studio/22.0/source/DUnit/Contrib/XPGen","file:///c%3A/program%20files%20%28x86%29/embarcadero/studio/22.0/source/data/rest","file:///c%3A/program%20files%20%28x86%29/embarcadero/studio/22.0/source/data/firedac","file:///c%3A/program%20files%20%28x86%29/embarcadero/studio/22.0/source/tethering","file:///c%3A/program%20files%20%28x86%29/embarcadero/studio/22.0/source/DUnitX","file:///c%3A/program%20files%20%28x86%29/embarcadero/studio/22.0/source/data/ems","file:///c%3A/program%20files%20%28x86%29/embarcadero/studio/22.0/source/rtl/net","file:///c%3A/program%20files%20%28x86%29/embarcadero/studio/22.0/source/FlatBox2D" ] } } -------------------------------------------------------------------------------- /Examples/delphi-middleware-horse/Samples.dpr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HashLoad/jsonbr/42fc0086b85513832828df60ad5e4dfa8dd0905f/Examples/delphi-middleware-horse/Samples.dpr -------------------------------------------------------------------------------- /Examples/delphi-middleware-horse/Samples.dproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | {4F1C3B99-7569-4455-9E7E-CD7C8F8E38F8} 4 | 18.8 5 | None 6 | Samples.dpr 7 | True 8 | Debug 9 | Win32 10 | 1 11 | Console 12 | 13 | 14 | true 15 | 16 | 17 | true 18 | Base 19 | true 20 | 21 | 22 | true 23 | Base 24 | true 25 | 26 | 27 | true 28 | Base 29 | true 30 | 31 | 32 | true 33 | Cfg_1 34 | true 35 | true 36 | 37 | 38 | true 39 | Base 40 | true 41 | 42 | 43 | .\$(Platform)\$(Config) 44 | .\$(Platform)\$(Config) 45 | false 46 | false 47 | false 48 | false 49 | false 50 | System;Xml;Data;Datasnap;Web;Soap;$(DCC_Namespace) 51 | Samples 52 | D:\PROJETOS-Brasil\Horse-IsaquePinheiro\src;$(DCC_UnitSearchPath) 53 | 1046 54 | CompanyName=;FileDescription=$(MSBuildProjectName);FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProgramID=com.embarcadero.$(MSBuildProjectName);ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments= 55 | 56 | 57 | DBXSqliteDriver;IndyIPCommon;RESTComponents;bindcompdbx;DBXInterBaseDriver;vcl;IndyIPServer;vclactnband;vclFireDAC;IndySystem;tethering;svnui;dsnapcon;FireDACADSDriver;FireDACMSAccDriver;fmxFireDAC;vclimg;FireDAC;vcltouch;vcldb;bindcompfmx;svn;FireDACSqliteDriver;FireDACPgDriver;inetdb;soaprtl;DbxCommonDriver;fmx;FireDACIBDriver;fmxdae;xmlrtl;soapmidas;fmxobj;vclwinx;rtl;DbxClientDriver;CustomIPTransport;vcldsnap;dbexpress;IndyCore;vclx;bindcomp;appanalytics;dsnap;FireDACCommon;IndyIPClient;bindcompvcl;RESTBackendComponents;VCLRESTComponents;soapserver;dbxcds;VclSmp;adortl;vclie;bindengine;DBXMySQLDriver;CloudService;dsnapxml;FireDACMySQLDriver;dbrtl;IndyProtocols;inetdbxpress;FireDACCommonODBC;FireDACCommonDriver;inet;fmxase;$(DCC_UsePackage) 58 | Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;Vcl;Vcl.Imaging;$(DCC_Namespace) 59 | Debug 60 | 1033 61 | true 62 | $(BDS)\bin\Artwork\Windows\UWP\delphi_UwpDefault_44.png 63 | (None) 64 | $(BDS)\bin\Artwork\Windows\UWP\delphi_UwpDefault_150.png 65 | 66 | 67 | DBXSqliteDriver;IndyIPCommon;RESTComponents;bindcompdbx;DBXInterBaseDriver;vcl;IndyIPServer;vclactnband;vclFireDAC;IndySystem;tethering;dsnapcon;FireDACADSDriver;FireDACMSAccDriver;fmxFireDAC;vclimg;FireDAC;vcltouch;vcldb;bindcompfmx;FireDACSqliteDriver;FireDACPgDriver;inetdb;soaprtl;DbxCommonDriver;fmx;FireDACIBDriver;fmxdae;xmlrtl;soapmidas;fmxobj;vclwinx;rtl;DbxClientDriver;CustomIPTransport;vcldsnap;dbexpress;IndyCore;vclx;bindcomp;appanalytics;dsnap;FireDACCommon;IndyIPClient;bindcompvcl;RESTBackendComponents;VCLRESTComponents;soapserver;dbxcds;VclSmp;adortl;vclie;bindengine;DBXMySQLDriver;CloudService;dsnapxml;FireDACMySQLDriver;dbrtl;IndyProtocols;inetdbxpress;FireDACCommonODBC;FireDACCommonDriver;inet;fmxase;$(DCC_UsePackage) 68 | true 69 | $(BDS)\bin\Artwork\Windows\UWP\delphi_UwpDefault_44.png 70 | $(BDS)\bin\Artwork\Windows\UWP\delphi_UwpDefault_150.png 71 | 72 | 73 | DEBUG;$(DCC_Define) 74 | true 75 | false 76 | true 77 | true 78 | true 79 | 80 | 81 | false 82 | ..\..\src;$(DCC_UnitSearchPath) 83 | 1033 84 | (None) 85 | 86 | 87 | false 88 | RELEASE;$(DCC_Define) 89 | 0 90 | 0 91 | 92 | 93 | 94 | MainSource 95 | 96 | 97 | Cfg_2 98 | Base 99 | 100 | 101 | Base 102 | 103 | 104 | Cfg_1 105 | Base 106 | 107 | 108 | 109 | Delphi.Personality.12 110 | Application 111 | 112 | 113 | 114 | Samples.dpr 115 | 116 | 117 | 118 | 119 | 120 | 121 | true 122 | 123 | 124 | 125 | 126 | Samples.exe 127 | true 128 | 129 | 130 | 131 | 132 | true 133 | 134 | 135 | 136 | 137 | true 138 | 139 | 140 | 141 | 142 | true 143 | 144 | 145 | 146 | 147 | true 148 | 149 | 150 | 151 | 152 | true 153 | 154 | 155 | 156 | 157 | 1 158 | 159 | 160 | Contents\MacOS 161 | 1 162 | 163 | 164 | Contents\MacOS 165 | 0 166 | 167 | 168 | 169 | 170 | classes 171 | 1 172 | 173 | 174 | 175 | 176 | res\xml 177 | 1 178 | 179 | 180 | 181 | 182 | library\lib\armeabi-v7a 183 | 1 184 | 185 | 186 | 187 | 188 | library\lib\armeabi 189 | 1 190 | 191 | 192 | 193 | 194 | library\lib\armeabi-v7a 195 | 1 196 | 197 | 198 | 199 | 200 | library\lib\mips 201 | 1 202 | 203 | 204 | 205 | 206 | library\lib\armeabi-v7a 207 | 1 208 | 209 | 210 | 211 | 212 | library\lib\armeabi-v7a 213 | 1 214 | 215 | 216 | 217 | 218 | res\drawable 219 | 1 220 | 221 | 222 | 223 | 224 | res\values 225 | 1 226 | 227 | 228 | 229 | 230 | res\values-v21 231 | 1 232 | 233 | 234 | 235 | 236 | res\values 237 | 1 238 | 239 | 240 | res\values 241 | 1 242 | 243 | 244 | 245 | 246 | res\drawable 247 | 1 248 | 249 | 250 | 251 | 252 | res\drawable-xxhdpi 253 | 1 254 | 255 | 256 | 257 | 258 | res\drawable-ldpi 259 | 1 260 | 261 | 262 | 263 | 264 | res\drawable-mdpi 265 | 1 266 | 267 | 268 | 269 | 270 | res\drawable-hdpi 271 | 1 272 | 273 | 274 | 275 | 276 | res\drawable-xhdpi 277 | 1 278 | 279 | 280 | 281 | 282 | res\drawable-mdpi 283 | 1 284 | 285 | 286 | res\drawable-mdpi 287 | 1 288 | 289 | 290 | 291 | 292 | res\drawable-hdpi 293 | 1 294 | 295 | 296 | res\drawable-hdpi 297 | 1 298 | 299 | 300 | 301 | 302 | res\drawable-xhdpi 303 | 1 304 | 305 | 306 | res\drawable-xhdpi 307 | 1 308 | 309 | 310 | 311 | 312 | res\drawable-xxhdpi 313 | 1 314 | 315 | 316 | res\drawable-xxhdpi 317 | 1 318 | 319 | 320 | 321 | 322 | res\drawable-xxxhdpi 323 | 1 324 | 325 | 326 | res\drawable-xxxhdpi 327 | 1 328 | 329 | 330 | 331 | 332 | res\drawable-small 333 | 1 334 | 335 | 336 | 337 | 338 | res\drawable-normal 339 | 1 340 | 341 | 342 | 343 | 344 | res\drawable-large 345 | 1 346 | 347 | 348 | 349 | 350 | res\drawable-xlarge 351 | 1 352 | 353 | 354 | 355 | 356 | res\values 357 | 1 358 | 359 | 360 | res\values 361 | 1 362 | 363 | 364 | 365 | 366 | 1 367 | 368 | 369 | Contents\MacOS 370 | 1 371 | 372 | 373 | 0 374 | 375 | 376 | 377 | 378 | Contents\MacOS 379 | 1 380 | .framework 381 | 382 | 383 | 0 384 | 385 | 386 | 387 | 388 | 1 389 | .dylib 390 | 391 | 392 | 1 393 | .dylib 394 | 395 | 396 | 1 397 | .dylib 398 | 399 | 400 | Contents\MacOS 401 | 1 402 | .dylib 403 | 404 | 405 | 0 406 | .dll;.bpl 407 | 408 | 409 | 410 | 411 | 1 412 | .dylib 413 | 414 | 415 | 1 416 | .dylib 417 | 418 | 419 | 1 420 | .dylib 421 | 422 | 423 | Contents\MacOS 424 | 1 425 | .dylib 426 | 427 | 428 | 0 429 | .bpl 430 | 431 | 432 | 433 | 434 | 0 435 | 436 | 437 | 0 438 | 439 | 440 | 0 441 | 442 | 443 | 0 444 | 445 | 446 | Contents\Resources\StartUp\ 447 | 0 448 | 449 | 450 | 0 451 | 452 | 453 | 454 | 455 | 1 456 | 457 | 458 | 1 459 | 460 | 461 | 1 462 | 463 | 464 | 465 | 466 | 1 467 | 468 | 469 | 1 470 | 471 | 472 | 1 473 | 474 | 475 | 476 | 477 | 1 478 | 479 | 480 | 1 481 | 482 | 483 | 1 484 | 485 | 486 | 487 | 488 | 1 489 | 490 | 491 | 1 492 | 493 | 494 | 1 495 | 496 | 497 | 498 | 499 | 1 500 | 501 | 502 | 1 503 | 504 | 505 | 1 506 | 507 | 508 | 509 | 510 | 1 511 | 512 | 513 | 1 514 | 515 | 516 | 1 517 | 518 | 519 | 520 | 521 | 1 522 | 523 | 524 | 1 525 | 526 | 527 | 1 528 | 529 | 530 | 531 | 532 | 1 533 | 534 | 535 | 1 536 | 537 | 538 | 1 539 | 540 | 541 | 542 | 543 | 1 544 | 545 | 546 | 1 547 | 548 | 549 | 1 550 | 551 | 552 | 553 | 554 | 1 555 | 556 | 557 | 1 558 | 559 | 560 | 1 561 | 562 | 563 | 564 | 565 | 1 566 | 567 | 568 | 1 569 | 570 | 571 | 1 572 | 573 | 574 | 575 | 576 | 1 577 | 578 | 579 | 1 580 | 581 | 582 | 1 583 | 584 | 585 | 586 | 587 | 1 588 | 589 | 590 | 1 591 | 592 | 593 | 1 594 | 595 | 596 | 597 | 598 | 1 599 | 600 | 601 | 1 602 | 603 | 604 | 1 605 | 606 | 607 | 608 | 609 | 1 610 | 611 | 612 | 1 613 | 614 | 615 | 1 616 | 617 | 618 | 619 | 620 | 1 621 | 622 | 623 | 1 624 | 625 | 626 | 1 627 | 628 | 629 | 630 | 631 | 1 632 | 633 | 634 | 1 635 | 636 | 637 | 1 638 | 639 | 640 | 641 | 642 | 1 643 | 644 | 645 | 1 646 | 647 | 648 | 1 649 | 650 | 651 | 652 | 653 | 1 654 | 655 | 656 | 1 657 | 658 | 659 | 1 660 | 661 | 662 | 663 | 664 | 1 665 | 666 | 667 | 1 668 | 669 | 670 | 1 671 | 672 | 673 | 674 | 675 | 1 676 | 677 | 678 | 1 679 | 680 | 681 | 1 682 | 683 | 684 | 685 | 686 | 1 687 | 688 | 689 | 1 690 | 691 | 692 | 1 693 | 694 | 695 | 696 | 697 | 1 698 | 699 | 700 | 1 701 | 702 | 703 | 1 704 | 705 | 706 | 707 | 708 | 1 709 | 710 | 711 | 1 712 | 713 | 714 | 1 715 | 716 | 717 | 718 | 719 | 1 720 | 721 | 722 | 1 723 | 724 | 725 | 1 726 | 727 | 728 | 729 | 730 | 1 731 | 732 | 733 | 1 734 | 735 | 736 | 1 737 | 738 | 739 | 740 | 741 | 1 742 | 743 | 744 | 1 745 | 746 | 747 | 1 748 | 749 | 750 | 751 | 752 | 1 753 | 754 | 755 | 1 756 | 757 | 758 | 1 759 | 760 | 761 | 762 | 763 | 1 764 | 765 | 766 | 767 | 768 | ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF 769 | 1 770 | 771 | 772 | ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF 773 | 1 774 | 775 | 776 | 777 | 778 | 1 779 | 780 | 781 | 1 782 | 783 | 784 | 785 | 786 | ..\ 787 | 1 788 | 789 | 790 | ..\ 791 | 1 792 | 793 | 794 | 795 | 796 | 1 797 | 798 | 799 | 1 800 | 801 | 802 | 1 803 | 804 | 805 | 806 | 807 | 1 808 | 809 | 810 | 1 811 | 812 | 813 | 1 814 | 815 | 816 | 817 | 818 | ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF 819 | 1 820 | 821 | 822 | 823 | 824 | ..\ 825 | 1 826 | 827 | 828 | 829 | 830 | Contents 831 | 1 832 | 833 | 834 | 835 | 836 | Contents\Resources 837 | 1 838 | 839 | 840 | 841 | 842 | library\lib\armeabi-v7a 843 | 1 844 | 845 | 846 | 1 847 | 848 | 849 | 1 850 | 851 | 852 | 1 853 | 854 | 855 | 1 856 | 857 | 858 | Contents\MacOS 859 | 1 860 | 861 | 862 | 0 863 | 864 | 865 | 866 | 867 | library\lib\armeabi-v7a 868 | 1 869 | 870 | 871 | 872 | 873 | 1 874 | 875 | 876 | 1 877 | 878 | 879 | 880 | 881 | Assets 882 | 1 883 | 884 | 885 | Assets 886 | 1 887 | 888 | 889 | 890 | 891 | Assets 892 | 1 893 | 894 | 895 | Assets 896 | 1 897 | 898 | 899 | 900 | 901 | 902 | 903 | 904 | 905 | 906 | 907 | 908 | 909 | 910 | 911 | True 912 | False 913 | 914 | 915 | 12 916 | 917 | 918 | 919 | 920 | 921 | -------------------------------------------------------------------------------- /Examples/delphi-middleware-horse/Samples.res: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HashLoad/jsonbr/42fc0086b85513832828df60ad5e4dfa8dd0905f/Examples/delphi-middleware-horse/Samples.res -------------------------------------------------------------------------------- /Examples/delphi-middleware-horse/Samples.stat: -------------------------------------------------------------------------------- 1 | [Stats] 2 | EditorSecs=14509 3 | DesignerSecs=1 4 | InspectorSecs=16 5 | CompileSecs=311672 6 | OtherSecs=775 7 | StartTime=18/04/2023 18:01:37 8 | RealKeys=0 9 | EffectiveKeys=0 10 | DebugSecs=5587 11 | -------------------------------------------------------------------------------- /Examples/delphi/JSONBr_Exemplo.dpr: -------------------------------------------------------------------------------- 1 | program JSONBr_Exemplo; 2 | 3 | uses 4 | Vcl.Forms, 5 | PUnit in 'PUnit.pas' {Form1}, 6 | model.person in 'model.person.pas', 7 | jsonbr.builders in '..\Source\Core\jsonbr.builders.pas', 8 | jsonbr in '..\Source\Core\jsonbr.pas', 9 | jsonbr.writer in '..\Source\Core\jsonbr.writer.pas'; 10 | 11 | {$R *.res} 12 | 13 | begin 14 | Application.Initialize; 15 | Application.MainFormOnTaskbar := True; 16 | Application.CreateForm(TForm1, Form1); 17 | Application.Run; 18 | end. 19 | -------------------------------------------------------------------------------- /Examples/delphi/JSONBr_Exemplo.dproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | {F9523C56-F9AE-4A0C-8057-C72B0563C0D7} 4 | 19.0 5 | VCL 6 | True 7 | Debug 8 | Win32 9 | 1 10 | Application 11 | JSONBr_Exemplo.dpr 12 | 13 | 14 | true 15 | 16 | 17 | true 18 | Base 19 | true 20 | 21 | 22 | true 23 | Base 24 | true 25 | 26 | 27 | true 28 | Base 29 | true 30 | 31 | 32 | true 33 | Cfg_1 34 | true 35 | true 36 | 37 | 38 | true 39 | Base 40 | true 41 | 42 | 43 | true 44 | Cfg_2 45 | true 46 | true 47 | 48 | 49 | .\$(Platform)\$(Config) 50 | .\$(Platform)\$(Config) 51 | false 52 | false 53 | false 54 | false 55 | false 56 | System;Xml;Data;Datasnap;Web;Soap;Vcl;Vcl.Imaging;Vcl.Touch;Vcl.Samples;Vcl.Shell;$(DCC_Namespace) 57 | $(BDS)\bin\delphi_PROJECTICON.ico 58 | $(BDS)\bin\Artwork\Windows\UWP\delphi_UwpDefault_44.png 59 | $(BDS)\bin\Artwork\Windows\UWP\delphi_UwpDefault_150.png 60 | JSONBr_Exemplo 61 | 62 | 63 | DBXSqliteDriver;RESTComponents;fmxase;DBXDb2Driver;DBXInterBaseDriver;ZComponent;vclactnband;ZCore;vclFireDAC;bindcompvclsmp;emsclientfiredac;tethering;svnui;DataSnapFireDAC;JvGlobus;FireDACADSDriver;JvPluginSystem;DBXMSSQLDriver;JvMM;DatasnapConnectorsFreePascal;FireDACMSSQLDriver;vcltouch;JvBands;vcldb;bindcompfmx;svn;JvJans;DBXOracleDriver;JvNet;inetdb;JvAppFrm;JvDotNetCtrls;emsedge;fmx;FireDACIBDriver;fmxdae;vcledge;JvWizards;FireDACDBXDriver;dbexpress;IndyCore;RestCoreClient;vclx;ZParseSql;JvPageComps;dsnap;emsclient;DataSnapCommon;FireDACCommon;JvDB;RESTBackendComponents;DataSnapConnectors;RestClientHorse;VCLRESTComponents;soapserver;JclDeveloperTools;vclie;bindengine;DBXMySQLDriver;CloudService;FireDACOracleDriver;FireDACMySQLDriver;DBXFirebirdDriver;JvCmp;JvHMI;FireDACCommonODBC;FireDACCommonDriver;DataSnapClient;inet;IndyIPCommon;bindcompdbx;JvCustom;vcl;IndyIPServer;DBXSybaseASEDriver;JvXPCtrls;IndySystem;FireDACDb2Driver;dsnapcon;FireDACMSAccDriver;fmxFireDAC;FireDACInfxDriver;vclimg;ZDbc;Jcl;FireDAC;JvCore;emshosting;JvCrypt;FireDACSqliteDriver;FireDACPgDriver;FireDACASADriver;DBXOdbcDriver;FireDACTDataDriver;soaprtl;DbxCommonDriver;JvDlgs;JvRuntimeDesign;JvManagedThreads;DataSnapServer;xmlrtl;soapmidas;DataSnapNativeClient;fmxobj;vclwinx;FireDACDSDriver;rtl;emsserverresource;DbxClientDriver;JvTimeFramework;DBXSybaseASADriver;CustomIPTransport;vcldsnap;JvSystem;JvStdCtrls;bindcomp;appanalytics;ZPlain;DBXInformixDriver;IndyIPClient;bindcompvcl;JvDocking;dbxcds;VclSmp;JvPascalInterpreter;adortl;FireDACODBCDriver;JclVcl;DataSnapIndy10ServerTransport;dsnapxml;DataSnapProviderClient;dbrtl;IndyProtocols;inetdbxpress;FireDACMongoDBDriver;JvControls;JvPrintPreview;JclContainers;DataSnapServerMidas;$(DCC_UsePackage) 64 | Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace) 65 | Debug 66 | true 67 | CompanyName=;FileDescription=$(MSBuildProjectName);FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProgramID=com.embarcadero.$(MSBuildProjectName);ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments= 68 | 1033 69 | $(BDS)\bin\default_app.manifest 70 | 71 | 72 | DBXSqliteDriver;RESTComponents;fmxase;DBXDb2Driver;DBXInterBaseDriver;ZComponent;vclactnband;ZCore;vclFireDAC;bindcompvclsmp;emsclientfiredac;tethering;DataSnapFireDAC;FireDACADSDriver;DBXMSSQLDriver;DatasnapConnectorsFreePascal;FireDACMSSQLDriver;vcltouch;vcldb;bindcompfmx;DBXOracleDriver;inetdb;emsedge;fmx;FireDACIBDriver;fmxdae;vcledge;FireDACDBXDriver;dbexpress;IndyCore;vclx;ZParseSql;dsnap;emsclient;DataSnapCommon;FireDACCommon;RESTBackendComponents;DataSnapConnectors;VCLRESTComponents;soapserver;vclie;bindengine;DBXMySQLDriver;CloudService;FireDACOracleDriver;FireDACMySQLDriver;DBXFirebirdDriver;FireDACCommonODBC;FireDACCommonDriver;DataSnapClient;inet;IndyIPCommon;bindcompdbx;vcl;IndyIPServer;DBXSybaseASEDriver;IndySystem;FireDACDb2Driver;dsnapcon;FireDACMSAccDriver;fmxFireDAC;FireDACInfxDriver;vclimg;ZDbc;FireDAC;emshosting;FireDACSqliteDriver;FireDACPgDriver;FireDACASADriver;DBXOdbcDriver;FireDACTDataDriver;soaprtl;DbxCommonDriver;DataSnapServer;xmlrtl;soapmidas;DataSnapNativeClient;fmxobj;vclwinx;FireDACDSDriver;rtl;emsserverresource;DbxClientDriver;DBXSybaseASADriver;CustomIPTransport;vcldsnap;bindcomp;appanalytics;ZPlain;DBXInformixDriver;IndyIPClient;bindcompvcl;dbxcds;VclSmp;adortl;FireDACODBCDriver;DataSnapIndy10ServerTransport;dsnapxml;DataSnapProviderClient;dbrtl;IndyProtocols;inetdbxpress;FireDACMongoDBDriver;DataSnapServerMidas;$(DCC_UsePackage) 73 | 74 | 75 | DEBUG;$(DCC_Define) 76 | true 77 | false 78 | true 79 | true 80 | true 81 | 82 | 83 | false 84 | true 85 | PerMonitorV2 86 | 87 | 88 | false 89 | RELEASE;$(DCC_Define) 90 | 0 91 | 0 92 | 93 | 94 | true 95 | PerMonitorV2 96 | 97 | 98 | 99 | MainSource 100 | 101 | 102 |
Form1
103 | dfm 104 |
105 | 106 | 107 | 108 | 109 | 110 | Cfg_2 111 | Base 112 | 113 | 114 | Base 115 | 116 | 117 | Cfg_1 118 | Base 119 | 120 |
121 | 122 | Delphi.Personality.12 123 | Application 124 | 125 | 126 | 127 | JSONBr_Exemplo.dpr 128 | 129 | 130 | 131 | True 132 | False 133 | 134 | 135 | 136 | 137 | JSONBr_Exemplo.exe 138 | true 139 | 140 | 141 | 142 | 143 | 1 144 | 145 | 146 | Contents\MacOS 147 | 1 148 | 149 | 150 | 0 151 | 152 | 153 | 154 | 155 | classes 156 | 1 157 | 158 | 159 | classes 160 | 1 161 | 162 | 163 | 164 | 165 | res\xml 166 | 1 167 | 168 | 169 | res\xml 170 | 1 171 | 172 | 173 | 174 | 175 | library\lib\armeabi-v7a 176 | 1 177 | 178 | 179 | 180 | 181 | library\lib\armeabi 182 | 1 183 | 184 | 185 | library\lib\armeabi 186 | 1 187 | 188 | 189 | 190 | 191 | library\lib\armeabi-v7a 192 | 1 193 | 194 | 195 | 196 | 197 | library\lib\mips 198 | 1 199 | 200 | 201 | library\lib\mips 202 | 1 203 | 204 | 205 | 206 | 207 | library\lib\armeabi-v7a 208 | 1 209 | 210 | 211 | library\lib\arm64-v8a 212 | 1 213 | 214 | 215 | 216 | 217 | library\lib\armeabi-v7a 218 | 1 219 | 220 | 221 | 222 | 223 | res\drawable 224 | 1 225 | 226 | 227 | res\drawable 228 | 1 229 | 230 | 231 | 232 | 233 | res\values 234 | 1 235 | 236 | 237 | res\values 238 | 1 239 | 240 | 241 | 242 | 243 | res\values-v21 244 | 1 245 | 246 | 247 | res\values-v21 248 | 1 249 | 250 | 251 | 252 | 253 | res\values 254 | 1 255 | 256 | 257 | res\values 258 | 1 259 | 260 | 261 | 262 | 263 | res\drawable 264 | 1 265 | 266 | 267 | res\drawable 268 | 1 269 | 270 | 271 | 272 | 273 | res\drawable-xxhdpi 274 | 1 275 | 276 | 277 | res\drawable-xxhdpi 278 | 1 279 | 280 | 281 | 282 | 283 | res\drawable-ldpi 284 | 1 285 | 286 | 287 | res\drawable-ldpi 288 | 1 289 | 290 | 291 | 292 | 293 | res\drawable-mdpi 294 | 1 295 | 296 | 297 | res\drawable-mdpi 298 | 1 299 | 300 | 301 | 302 | 303 | res\drawable-hdpi 304 | 1 305 | 306 | 307 | res\drawable-hdpi 308 | 1 309 | 310 | 311 | 312 | 313 | res\drawable-xhdpi 314 | 1 315 | 316 | 317 | res\drawable-xhdpi 318 | 1 319 | 320 | 321 | 322 | 323 | res\drawable-mdpi 324 | 1 325 | 326 | 327 | res\drawable-mdpi 328 | 1 329 | 330 | 331 | 332 | 333 | res\drawable-hdpi 334 | 1 335 | 336 | 337 | res\drawable-hdpi 338 | 1 339 | 340 | 341 | 342 | 343 | res\drawable-xhdpi 344 | 1 345 | 346 | 347 | res\drawable-xhdpi 348 | 1 349 | 350 | 351 | 352 | 353 | res\drawable-xxhdpi 354 | 1 355 | 356 | 357 | res\drawable-xxhdpi 358 | 1 359 | 360 | 361 | 362 | 363 | res\drawable-xxxhdpi 364 | 1 365 | 366 | 367 | res\drawable-xxxhdpi 368 | 1 369 | 370 | 371 | 372 | 373 | res\drawable-small 374 | 1 375 | 376 | 377 | res\drawable-small 378 | 1 379 | 380 | 381 | 382 | 383 | res\drawable-normal 384 | 1 385 | 386 | 387 | res\drawable-normal 388 | 1 389 | 390 | 391 | 392 | 393 | res\drawable-large 394 | 1 395 | 396 | 397 | res\drawable-large 398 | 1 399 | 400 | 401 | 402 | 403 | res\drawable-xlarge 404 | 1 405 | 406 | 407 | res\drawable-xlarge 408 | 1 409 | 410 | 411 | 412 | 413 | res\values 414 | 1 415 | 416 | 417 | res\values 418 | 1 419 | 420 | 421 | 422 | 423 | 1 424 | 425 | 426 | Contents\MacOS 427 | 1 428 | 429 | 430 | 0 431 | 432 | 433 | 434 | 435 | Contents\MacOS 436 | 1 437 | .framework 438 | 439 | 440 | Contents\MacOS 441 | 1 442 | .framework 443 | 444 | 445 | 0 446 | 447 | 448 | 449 | 450 | 1 451 | .dylib 452 | 453 | 454 | 1 455 | .dylib 456 | 457 | 458 | 1 459 | .dylib 460 | 461 | 462 | Contents\MacOS 463 | 1 464 | .dylib 465 | 466 | 467 | Contents\MacOS 468 | 1 469 | .dylib 470 | 471 | 472 | 0 473 | .dll;.bpl 474 | 475 | 476 | 477 | 478 | 1 479 | .dylib 480 | 481 | 482 | 1 483 | .dylib 484 | 485 | 486 | 1 487 | .dylib 488 | 489 | 490 | Contents\MacOS 491 | 1 492 | .dylib 493 | 494 | 495 | Contents\MacOS 496 | 1 497 | .dylib 498 | 499 | 500 | 0 501 | .bpl 502 | 503 | 504 | 505 | 506 | 0 507 | 508 | 509 | 0 510 | 511 | 512 | 0 513 | 514 | 515 | 0 516 | 517 | 518 | 0 519 | 520 | 521 | Contents\Resources\StartUp\ 522 | 0 523 | 524 | 525 | Contents\Resources\StartUp\ 526 | 0 527 | 528 | 529 | 0 530 | 531 | 532 | 533 | 534 | ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset 535 | 1 536 | 537 | 538 | ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset 539 | 1 540 | 541 | 542 | 543 | 544 | ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset 545 | 1 546 | 547 | 548 | ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset 549 | 1 550 | 551 | 552 | 553 | 554 | ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset 555 | 1 556 | 557 | 558 | ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset 559 | 1 560 | 561 | 562 | 563 | 564 | ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset 565 | 1 566 | 567 | 568 | ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset 569 | 1 570 | 571 | 572 | 573 | 574 | ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset 575 | 1 576 | 577 | 578 | ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset 579 | 1 580 | 581 | 582 | 583 | 584 | ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset 585 | 1 586 | 587 | 588 | ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset 589 | 1 590 | 591 | 592 | 593 | 594 | 1 595 | 596 | 597 | 1 598 | 599 | 600 | 601 | 602 | ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF 603 | 1 604 | 605 | 606 | ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF 607 | 1 608 | 609 | 610 | 611 | 612 | 1 613 | 614 | 615 | 1 616 | 617 | 618 | 619 | 620 | ..\ 621 | 1 622 | 623 | 624 | ..\ 625 | 1 626 | 627 | 628 | 629 | 630 | 1 631 | 632 | 633 | 1 634 | 635 | 636 | 1 637 | 638 | 639 | 640 | 641 | ..\$(PROJECTNAME).launchscreen 642 | 64 643 | 644 | 645 | ..\$(PROJECTNAME).launchscreen 646 | 64 647 | 648 | 649 | 650 | 651 | 1 652 | 653 | 654 | 1 655 | 656 | 657 | 1 658 | 659 | 660 | 661 | 662 | ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF 663 | 1 664 | 665 | 666 | 667 | 668 | ..\ 669 | 1 670 | 671 | 672 | ..\ 673 | 1 674 | 675 | 676 | 677 | 678 | Contents 679 | 1 680 | 681 | 682 | Contents 683 | 1 684 | 685 | 686 | 687 | 688 | Contents\Resources 689 | 1 690 | 691 | 692 | Contents\Resources 693 | 1 694 | 695 | 696 | 697 | 698 | library\lib\armeabi-v7a 699 | 1 700 | 701 | 702 | library\lib\arm64-v8a 703 | 1 704 | 705 | 706 | 1 707 | 708 | 709 | 1 710 | 711 | 712 | 1 713 | 714 | 715 | 1 716 | 717 | 718 | Contents\MacOS 719 | 1 720 | 721 | 722 | Contents\MacOS 723 | 1 724 | 725 | 726 | 0 727 | 728 | 729 | 730 | 731 | library\lib\armeabi-v7a 732 | 1 733 | 734 | 735 | 736 | 737 | 1 738 | 739 | 740 | 1 741 | 742 | 743 | 744 | 745 | Assets 746 | 1 747 | 748 | 749 | Assets 750 | 1 751 | 752 | 753 | 754 | 755 | Assets 756 | 1 757 | 758 | 759 | Assets 760 | 1 761 | 762 | 763 | 764 | 765 | 766 | 767 | 768 | 769 | 770 | 771 | 772 | 773 | 774 | 775 | 12 776 | 777 | 778 | 779 | 780 |
781 | -------------------------------------------------------------------------------- /Examples/delphi/JSONBr_Exemplo.res: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HashLoad/jsonbr/42fc0086b85513832828df60ad5e4dfa8dd0905f/Examples/delphi/JSONBr_Exemplo.res -------------------------------------------------------------------------------- /Examples/delphi/JSONBr_Exemplo.stat: -------------------------------------------------------------------------------- 1 | [Stats] 2 | EditorSecs=105 3 | DesignerSecs=20 4 | InspectorSecs=1 5 | CompileSecs=3914 6 | OtherSecs=22 7 | StartTime=22/07/2022 11:21:26 8 | RealKeys=0 9 | EffectiveKeys=0 10 | DebugSecs=13 11 | -------------------------------------------------------------------------------- /Examples/delphi/PUnit.dfm: -------------------------------------------------------------------------------- 1 | object Form1: TForm1 2 | Left = 0 3 | Top = 0 4 | Caption = 'Form1' 5 | ClientHeight = 299 6 | ClientWidth = 635 7 | Color = clBtnFace 8 | Font.Charset = DEFAULT_CHARSET 9 | Font.Color = clWindowText 10 | Font.Height = -11 11 | Font.Name = 'Tahoma' 12 | Font.Style = [] 13 | OldCreateOrder = False 14 | Position = poDesktopCenter 15 | PixelsPerInch = 96 16 | TextHeight = 13 17 | object Memo1: TMemo 18 | Left = 66 19 | Top = 30 20 | Width = 499 21 | Height = 166 22 | Lines.Strings = ( 23 | 'Memo1') 24 | TabOrder = 0 25 | end 26 | object Button1: TButton 27 | Left = 66 28 | Top = 222 29 | Width = 118 30 | Height = 25 31 | Caption = 'Funcional' 32 | TabOrder = 1 33 | OnClick = Button1Click 34 | end 35 | object Button2: TButton 36 | Left = 462 37 | Top = 222 38 | Width = 99 39 | Height = 25 40 | Caption = 'ObjectToJSON' 41 | TabOrder = 2 42 | OnClick = Button2Click 43 | end 44 | end 45 | -------------------------------------------------------------------------------- /Examples/delphi/PUnit.pas: -------------------------------------------------------------------------------- 1 | unit PUnit; 2 | 3 | interface 4 | 5 | uses 6 | DB, Windows, 7 | Messages, 8 | SysUtils, 9 | Variants, 10 | Classes, 11 | Graphics, 12 | Controls, 13 | Forms, 14 | Dialogs, 15 | StdCtrls, 16 | Rtti, 17 | 18 | jsonbr; 19 | 20 | type 21 | TForm1 = class(TForm) 22 | Memo1: TMemo; 23 | Button1: TButton; 24 | Button2: TButton; 25 | procedure Button1Click(Sender: TObject); 26 | procedure Button2Click(Sender: TObject); 27 | private 28 | { Private declarations } 29 | public 30 | { Public declarations } 31 | end; 32 | 33 | var 34 | Form1: TForm1; 35 | 36 | implementation 37 | 38 | uses 39 | model.person; 40 | 41 | {$R *.dfm} 42 | 43 | procedure TForm1.Button1Click(Sender: TObject); 44 | begin 45 | // Criar JSON de forma funcinal 46 | Memo1.Clear; 47 | Memo1.Lines.Add( 48 | TJSONBr 49 | .BeginArray 50 | .BeginObject 51 | .AddPair('ID', 1) 52 | .AddPair('Name', 'Json') 53 | .EndObject 54 | .BeginArray 55 | .BeginObject 56 | .AddPair('ID', 2) 57 | .AddPair('Name', 'Json 2') 58 | .EndObject 59 | .BeginObject 60 | .AddPair('ID', 3) 61 | .AddPair('Name', 'Json 3') 62 | .EndObject 63 | .EndArray 64 | .EndArray 65 | .ToJSON); 66 | end; 67 | 68 | procedure TForm1.Button2Click(Sender: TObject); 69 | var 70 | Person: TPerson; 71 | Person1: TpersonSub; 72 | Person2: TpersonSub; 73 | begin 74 | Person := TPerson.Create; 75 | try 76 | Person.Id := 1; 77 | Person.FirstName := ''; 78 | Person.LastName := 'Json'; 79 | Person.Age := 10; 80 | Person.Salary := 100.10; 81 | Person.Date := Now; 82 | 83 | Person.Pessoa.Id := 2; 84 | Person.Pessoa.FirstName := 'Json 2'; 85 | Person.Pessoa.LastName := 'Parse 2'; 86 | Person.Pessoa.Age := 20; 87 | Person.Pessoa.Salary := 200.20; 88 | Person.Imagem := '12345678901234567890'; 89 | 90 | Person1 := TPersonSub.Create; 91 | Person1.Id := 3; 92 | Person1.FirstName := 'Json 3'; 93 | Person1.LastName := 'Parse 3'; 94 | Person1.Age := 30; 95 | Person1.Salary := 300.30; 96 | 97 | Person2 := TPersonSub.Create; 98 | Person2.Id := 4; 99 | Person2.FirstName := 'Json 4'; 100 | Person2.LastName := 'Parse 4'; 101 | Person2.Age := 40; 102 | Person2.Salary := 400.40; 103 | 104 | Person.Pessoas.Add(Person1); 105 | Person.Pessoas.Add(Person2); 106 | 107 | TJSONBr.OnSetValue := nil; // Criando seu proprio tratamento 108 | TJSONBr.OnGetValue := nil; // Criando seu proprio tratamento 109 | Memo1.Lines.Text := TJSONBr.ObjectToJsonString(Person); 110 | 111 | finally 112 | Person.Free; 113 | end; 114 | end; 115 | 116 | end. 117 | -------------------------------------------------------------------------------- /Examples/delphi/model.person.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HashLoad/jsonbr/42fc0086b85513832828df60ad5e4dfa8dd0905f/Examples/delphi/model.person.pas -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # JSONBr Library for Delphi 2 | 3 | JSON BRASIL é uma library opensource que provê escritas arquivos JSON, de forma funcional e orientada a objeto, além dos recursos de gerar um JSON de um objeto e popular o objeto com base em um arquivo JSON, seu diferencial são os eventos onGetValue() e onSetValue() que dão a dinâmica de tratar seu próprio tipo de campo, alimentado assim o JSON e lendo esse campo dele. 4 | 5 | Essa classe estava enraizada ao projeto ORMBr, nela foi feito vários testes em questão de performance, o qual ela se saiu muito bem com as que foi confrontada, visto isso, foi visto a possibilidade de ser uma library independente, que pudesse ser usado até mesmo por outros projetos opensource, mas para isso, o primeiro passo a ser dado seria remover qualquer vínculo com framework ORMBr, então com um pouco de esforço e tempo de dedicação, nasceu o JSONBr. 6 | 7 | A cereja do bolo desse projeto é a dinâmica que ele oferece para outros projetos tratar seus tipos de campos criados, através dos dois eventos onGetValue e onSetValue, esses eventos quando usados intercepta o dado do evento interno, possibilitando assim, a verificação do tipo e o tratamento do valor do campo e como ele deve ser aplicado na tag no arquivo 8 | 9 |

10 | 11 | 12 | 13 |

14 | 15 | ## 🏛 Delphi Versions 16 | Embarcadero Delphi XE e superior. 17 | 18 | ## ⚙️ Instalação 19 | Instalação usando o [`boss install`] 20 | ```sh 21 | boss install "https://github.com/HashLoad/jsonbr" 22 | ``` 23 | 24 | ## ⚡️ Como usar 25 | 26 | ```Delphi 27 | procedure TTestJSONBr.Loop50000; 28 | var 29 | LList: TObjectList; 30 | LObject: TRootDTO; 31 | LFor: Integer; 32 | LInit, LEnd: Cardinal; 33 | begin 34 | LList := TObjectList.Create; 35 | LList.OwnsObjects := True; 36 | try 37 | LInit := GetTickCount; 38 | for LFor := 1 to SAMPLE_JSON_1_COUNT do 39 | begin 40 | LObject := TJSONBr.JsonToObject(SAMPLE_JSON_1); 41 | LList.Add(LObject); 42 | end; 43 | LEnd := GetTickCount; 44 | // 45 | System.Writeln(Format('..gerando 50.000 objetos de um json object(' + 46 | cMESSAGE, [(LEnd - LInit) / 1000, (LEnd - LInit)]) + ')'); 47 | finally 48 | LList.Clear; 49 | LList.Free; 50 | end; 51 | end; 52 | ``` 53 | 54 | ```Delphi 55 | procedure TForm1.Button2Click(Sender: TObject); 56 | var 57 | Person: TPerson; 58 | Person1: TpersonSub; 59 | Person2: TpersonSub; 60 | begin 61 | Person := TPerson.Create; 62 | try 63 | Person.Id := 1; 64 | Person.FirstName := ''; 65 | Person.LastName := 'Json'; 66 | Person.Age := 10; 67 | Person.Salary := 100.10; 68 | Person.Date := Now; 69 | 70 | Person.Pessoa.Id := 2; 71 | Person.Pessoa.FirstName := 'Json 2'; 72 | Person.Pessoa.LastName := 'Parse 2'; 73 | Person.Pessoa.Age := 20; 74 | Person.Pessoa.Salary := 200.20; 75 | Person.Imagem := '12345678901234567890'; 76 | 77 | Person1 := TPersonSub.Create; 78 | Person1.Id := 3; 79 | Person1.FirstName := 'Json 3'; 80 | Person1.LastName := 'Parse 3'; 81 | Person1.Age := 30; 82 | Person1.Salary := 300.30; 83 | 84 | Person2 := TPersonSub.Create; 85 | Person2.Id := 4; 86 | Person2.FirstName := 'Json 4'; 87 | Person2.LastName := 'Parse 4'; 88 | Person2.Age := 40; 89 | Person2.Salary := 400.40; 90 | 91 | Person.Pessoas.Add(Person1); 92 | Person.Pessoas.Add(Person2); 93 | 94 | TJSONBr.OnSetValue := nil; // Criando seu proprio tratamento de tipos 95 | TJSONBr.OnGetValue := nil; // Criando seu proprio tratamento de tipos 96 | Memo1.Lines.Text := TJSONBr.ObjectToJsonString(Person); 97 | 98 | finally 99 | Person.Free; 100 | end; 101 | end; 102 | ``` 103 | 104 | ```Delphi 105 | procedure TTestJSONBr.AddPair_1; 106 | var 107 | LResult: String; 108 | const 109 | LJSON = '[{"ID":1,"Name":"Json"},[{"ID":2,"Name":"Json 2"},{"ID":3,"Name":"Json 3"}]]'; 110 | begin 111 | LResult := TJSONBr 112 | .BeginArray 113 | .BeginObject 114 | .AddPair('ID', 1) 115 | .AddPair('Name', 'Json') 116 | .EndObject 117 | .BeginArray 118 | .BeginObject 119 | .AddPair('ID', 2) 120 | .AddPair('Name', 'Json 2') 121 | .EndObject 122 | .BeginObject 123 | .AddPair('ID', 3) 124 | .AddPair('Name', 'Json 3') 125 | .EndObject 126 | .EndArray 127 | .EndArray 128 | .ToJSON; 129 | end; 130 | ``` 131 | 132 | ```Delphi 133 | procedure TTestJSONBr.AddValue_1; 134 | var 135 | LResult: String; 136 | const 137 | LJSON = '{"nome":"Fulano","idade":90,"filmes_preferidos":["Pulp Fiction","Clube da Luta"],"contatos" 138 | :{"telefone":"(11)91111-2222","emails":["fulano@gmail.com","fulano@yahoo.com"]}}'; 139 | begin 140 | LResult := TJSONBr 141 | .BeginObject 142 | .AddPair('nome', 'Fulano') 143 | .AddPair('idade', 90) 144 | .AddPairArray('filmes_preferidos', ['Pulp Fiction', 'Clube da Luta']) 145 | .BeginObject('contatos') 146 | .AddPair('telefone', '(11)91111-2222') 147 | .AddPairArray('emails', ['fulano@gmail.com', 'fulano@yahoo.com']) 148 | .EndObject 149 | .EndObject 150 | .ToJSON; 151 | end; 152 | ``` 153 | 154 | ## ✍️ License 155 | [![License](https://img.shields.io/badge/Licence-LGPL--3.0-blue.svg)](https://opensource.org/licenses/LGPL-3.0) 156 | 157 | ## ⛏️ Contribuição 158 | 159 | Nossa equipe adoraria receber contribuições para este projeto open source. Se você tiver alguma ideia ou correção de bug, sinta-se à vontade para abrir uma issue ou enviar uma pull request. 160 | 161 | [![Issues](https://img.shields.io/badge/Issues-channel-orange)](https://github.com/HashLoad/ormbr/issues) 162 | 163 | Para enviar uma pull request, siga estas etapas: 164 | 165 | 1. Faça um fork do projeto 166 | 2. Crie uma nova branch (`git checkout -b minha-nova-funcionalidade`) 167 | 3. Faça suas alterações e commit (`git commit -am 'Adicionando nova funcionalidade'`) 168 | 4. Faça push da branch (`git push origin minha-nova-funcionalidade`) 169 | 5. Abra uma pull request 170 | 171 | ## 📬 Contato 172 | [![Telegram](https://img.shields.io/badge/Telegram-channel-blue)](https://t.me/hashload) 173 | 174 | ## 💲 Doação 175 | [![Doação](https://img.shields.io/badge/PagSeguro-contribua-green)](https://pag.ae/bglQrWD) 176 | -------------------------------------------------------------------------------- /Source/Core/jsonbr.builders.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HashLoad/jsonbr/42fc0086b85513832828df60ad5e4dfa8dd0905f/Source/Core/jsonbr.builders.pas -------------------------------------------------------------------------------- /Source/Core/jsonbr.reader.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HashLoad/jsonbr/42fc0086b85513832828df60ad5e4dfa8dd0905f/Source/Core/jsonbr.reader.pas -------------------------------------------------------------------------------- /Source/Core/jsonbr.utils.pas: -------------------------------------------------------------------------------- 1 | unit jsonbr.utils; 2 | 3 | interface 4 | 5 | uses 6 | StrUtils, 7 | DateUtils, 8 | SysUtils; 9 | 10 | function DateTimeToIso8601(const AValue: TDateTime; 11 | const AUseISO8601DateFormat: Boolean): string; 12 | function Iso8601ToDateTime(const AValue: string; 13 | const AUseISO8601DateFormat: Boolean): TDateTime; 14 | 15 | var 16 | JsonBrFormatSettings: TFormatSettings; 17 | 18 | implementation 19 | 20 | function DateTimeToIso8601(const AValue: TDateTime; 21 | const AUseISO8601DateFormat: boolean): string; 22 | var 23 | LDatePart: string; 24 | LTimePart: string; 25 | begin 26 | Result := ''; 27 | if AValue = 0 then 28 | exit; 29 | 30 | if AUseISO8601DateFormat then 31 | LDatePart := FormatDateTime('yyyy-mm-dd', AValue) 32 | else 33 | LDatePart := DateToStr(AValue, FormatSettings); 34 | 35 | if Frac(AValue) = 0 then 36 | Result := ifThen(AUseISO8601DateFormat, LDatePart, TimeToStr(AValue, FormatSettings)) 37 | else 38 | begin 39 | LTimePart := FormatDateTime('hh:nn:ss', AValue); 40 | Result := ifThen(AUseISO8601DateFormat, LDatePart + 'T' + LTimePart, LDatePart + ' ' + LTimePart); 41 | end; 42 | end; 43 | 44 | function Iso8601ToDateTime(const AValue: string; 45 | const AUseISO8601DateFormat: boolean): TDateTime; 46 | var 47 | LYYYY: Integer; 48 | LMM: Integer; 49 | LDD: Integer; 50 | LHH: Integer; 51 | LMI: Integer; 52 | LSS: Integer; 53 | LMS: Integer; 54 | begin 55 | if not AUseISO8601DateFormat then 56 | begin 57 | Result := StrToDateTimeDef(AValue, 0); 58 | exit; 59 | end; 60 | LYYYY := 0; LMM := 0; LDD := 0; LHH := 0; LMI := 0; LSS := 0; LMS := 0; 61 | if TryStrToInt(Copy(AValue, 1, 4), LYYYY) and 62 | TryStrToInt(Copy(AValue, 6, 2), LMM) and 63 | TryStrToInt(Copy(AValue, 9, 2), LDD) and 64 | TryStrToInt(Copy(AValue, 12, 2), LHH) and 65 | TryStrToInt(Copy(AValue, 15, 2), LMI) and 66 | TryStrToInt(Copy(AValue, 18, 2), LSS) then 67 | begin 68 | Result := EncodeDateTime(LYYYY, LMM, LDD, LHH, LMI, LSS, LMS); 69 | end 70 | else 71 | Result := 0; 72 | end; 73 | 74 | initialization 75 | JsonBrFormatSettings := TFormatSettings.Create('en_US'); 76 | 77 | end. 78 | -------------------------------------------------------------------------------- /Source/Core/jsonbr.writer.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HashLoad/jsonbr/42fc0086b85513832828df60ad5e4dfa8dd0905f/Source/Core/jsonbr.writer.pas -------------------------------------------------------------------------------- /Source/Middleware-Horse/Horse.JsonBr.pas: -------------------------------------------------------------------------------- 1 | unit Horse.JsonBr; 2 | 3 | interface 4 | 5 | uses 6 | Web.HTTPApp, 7 | System.Classes, 8 | System.SysUtils, 9 | Horse; 10 | 11 | type 12 | THorseRequestHelper = class helper for THorseRequest 13 | private 14 | class var Res: THorseResponse; 15 | public 16 | function Body: T; overload; 17 | end; 18 | 19 | function HorseJsonBr: THorseCallback; overload; 20 | function HorseJsonBr(const ACharset: string): THorseCallback; overload; 21 | 22 | procedure Middleware(Req: THorseRequest; Res: THorseResponse; Next: TNextProc); 23 | 24 | implementation 25 | 26 | uses jsonbr; 27 | 28 | var 29 | Charset: string; 30 | 31 | function HorseJsonBr: THorseCallback; 32 | var 33 | LFormatSettings: TFormatSettings; 34 | begin 35 | Result := HorseJsonBr('UTF-8'); 36 | // Defina os formatos que sairam no JSON: 37 | LFormatSettings := TFormatSettings.Create('en_US'); 38 | // LFormatSettings.ShortDateFormat := 'dd/MM/yyyy'; 39 | TJSONBr.FormatSettings := LFormatSettings; 40 | end; 41 | 42 | function HorseJsonBr(const ACharset: string): THorseCallback; 43 | begin 44 | Charset := ACharset; 45 | Result := Middleware; 46 | end; 47 | 48 | procedure Middleware(Req: THorseRequest; Res: THorseResponse; Next: TProc); 49 | begin 50 | if (Req.MethodType in [mtPost, mtPut, mtPatch]) and 51 | (Req.RawWebRequest.ContentType.Contains('application/jsonbr')) then 52 | begin 53 | THorseRequest.Res := Res; 54 | end; 55 | 56 | try 57 | Next; 58 | finally 59 | if (Res.Content <> nil) and 60 | (Req.RawWebRequest.ContentType.Contains('application/jsonbr')) then 61 | begin 62 | Res.RawWebResponse.Content := TJSONBr.ObjectToJsonString(Res.Content); 63 | Res.RawWebResponse.ContentType := 'application/json; charset=' + Charset; 64 | end; 65 | THorseRequest.Res := nil; 66 | end; 67 | end; 68 | 69 | { THorseRequestHelper } 70 | 71 | function THorseRequestHelper.Body: T; 72 | var 73 | LJSON: String; 74 | begin 75 | Result := nil; 76 | 77 | if (MethodType in [mtPost, mtPut, mtPatch]) and 78 | (RawWebRequest.ContentType.Contains('application/jsonbr')) then 79 | begin 80 | LJSON := RawWebRequest.Content; 81 | try 82 | if (LJSON.StartsWith('[') and LJSON.EndsWith(']')) then 83 | Result := T(TJSONBr.JsonToObjectList(LJSON)) 84 | else 85 | Result := T(TJSONBr.JsonToObject(LJSON)); 86 | except 87 | Res.Send('Invalid JSON').Status(THTTPStatus.BadRequest); 88 | raise EHorseCallbackInterrupted.Create; 89 | end; 90 | end; 91 | end; 92 | 93 | end. 94 | -------------------------------------------------------------------------------- /Source/jsonbr.inc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HashLoad/jsonbr/42fc0086b85513832828df60ad5e4dfa8dd0905f/Source/jsonbr.inc -------------------------------------------------------------------------------- /Source/jsonbr.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HashLoad/jsonbr/42fc0086b85513832828df60ad5e4dfa8dd0905f/Source/jsonbr.pas -------------------------------------------------------------------------------- /Test Delphi/JSONBr_Tests.dpr: -------------------------------------------------------------------------------- 1 | program JSONBr_Tests; 2 | 3 | {$IFNDEF TESTINSIGHT} 4 | {$APPTYPE CONSOLE} 5 | {$ENDIF} 6 | {$STRONGLINKTYPES ON} 7 | uses 8 | System.SysUtils, 9 | {$IFDEF TESTINSIGHT} 10 | TestInsight.DUnitX, 11 | {$ELSE} 12 | DUnitX.Loggers.Console, 13 | DUnitX.Loggers.Xml.NUnit, 14 | {$ENDIF } 15 | DUnitX.TestFramework, 16 | UnitTests in 'UnitTests.pas', 17 | jsonbr.builders in '..\Source\Core\jsonbr.builders.pas', 18 | jsonbr in '..\Source\Core\jsonbr.pas', 19 | jsonbr.writer in '..\Source\Core\jsonbr.writer.pas'; 20 | 21 | {$IFNDEF TESTINSIGHT} 22 | var 23 | runner: ITestRunner; 24 | results: IRunResults; 25 | logger: ITestLogger; 26 | nunitLogger : ITestLogger; 27 | {$ENDIF} 28 | begin 29 | ReportMemoryLeaksOnShutdown := DebugHook <> 0; 30 | {$IFDEF TESTINSIGHT} 31 | TestInsight.DUnitX.RunRegisteredTests; 32 | {$ELSE} 33 | try 34 | //Check command line options, will exit if invalid 35 | TDUnitX.CheckCommandLine; 36 | //Create the test runner 37 | runner := TDUnitX.CreateRunner; 38 | //Tell the runner to use RTTI to find Fixtures 39 | runner.UseRTTI := True; 40 | //tell the runner how we will log things 41 | //Log to the console window 42 | logger := TDUnitXConsoleLogger.Create(true); 43 | runner.AddLogger(logger); 44 | //Generate an NUnit compatible XML File 45 | nunitLogger := TDUnitXXMLNUnitFileLogger.Create(TDUnitX.Options.XMLOutputFile); 46 | runner.AddLogger(nunitLogger); 47 | runner.FailsOnNoAsserts := False; //When true, Assertions must be made during tests; 48 | 49 | //Run tests 50 | results := runner.Execute; 51 | if not results.AllPassed then 52 | System.ExitCode := EXIT_ERRORS; 53 | 54 | //We don't want this happening when running under CI. 55 | TDUnitX.Options.ExitBehavior := TDUnitXExitBehavior.Pause; 56 | if TDUnitX.Options.ExitBehavior = TDUnitXExitBehavior.Pause then 57 | begin 58 | System.Write('Done.. press key to quit.'); 59 | System.Readln; 60 | end; 61 | except 62 | on E: Exception do 63 | System.Writeln(E.ClassName, ': ', E.Message); 64 | end; 65 | {$ENDIF} 66 | end. 67 | -------------------------------------------------------------------------------- /Test Delphi/JSONBr_Tests.dproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | {162AD927-B3BC-49C6-B1D7-57326A4BB7F9} 4 | 19.5 5 | None 6 | True 7 | Debug 8 | Win32 9 | 1 10 | Console 11 | JSONBr_Tests.dpr 12 | 13 | 14 | true 15 | 16 | 17 | true 18 | Base 19 | true 20 | 21 | 22 | true 23 | Base 24 | true 25 | 26 | 27 | true 28 | Base 29 | true 30 | 31 | 32 | true 33 | Base 34 | true 35 | 36 | 37 | true 38 | Cfg_1 39 | true 40 | true 41 | 42 | 43 | true 44 | Base 45 | true 46 | 47 | 48 | .\$(Platform)\$(Config) 49 | .\$(Platform)\$(Config) 50 | false 51 | false 52 | false 53 | false 54 | false 55 | System;Xml;Data;Datasnap;Web;Soap;$(DCC_Namespace) 56 | true 57 | $(BDS)\bin\delphi_PROJECTICON.ico 58 | $(BDS)\bin\delphi_PROJECTICNS.icns 59 | $(DUnitX);$(DCC_UnitSearchPath) 60 | JSONBr_Tests 61 | 62 | 63 | RESTComponents;emsclientfiredac;DataSnapFireDAC;FireDACADSDriver;DatasnapConnectorsFreePascal;FireDACMSSQLDriver;inetdb;emsedge;fmx;FireDACIBDriver;dbexpress;IndyCore;dsnap;emsclient;DataSnapCommon;FireDACCommon;RESTBackendComponents;DataSnapConnectors;soapserver;bindengine;CloudService;FireDACOracleDriver;FireDACMySQLDriver;FireDACCommonODBC;FireDACCommonDriver;DataSnapClient;inet;IndySystem;FireDACDb2Driver;FireDACInfxDriver;FireDAC;emshosting;FireDACSqliteDriver;FireDACPgDriver;FireDACASADriver;FireDACTDataDriver;soaprtl;DbxCommonDriver;DataSnapServer;xmlrtl;soapmidas;DataSnapNativeClient;rtl;emsserverresource;DbxClientDriver;CustomIPTransport;bindcomp;dbxcds;FireDACODBCDriver;DataSnapIndy10ServerTransport;dsnapxml;dbrtl;IndyProtocols;FireDACMongoDBDriver;DataSnapServerMidas;$(DCC_UsePackage) 64 | 65 | 66 | DBXSqliteDriver;RESTComponents;fmxase;DBXDb2Driver;DBXInterBaseDriver;ZComponent;vclactnband;ZCore;vclFireDAC;bindcompvclsmp;emsclientfiredac;tethering;svnui;DataSnapFireDAC;JvGlobus;FireDACADSDriver;JvPluginSystem;DBXMSSQLDriver;JvMM;DatasnapConnectorsFreePascal;FireDACMSSQLDriver;vcltouch;JvBands;vcldb;bindcompfmx;svn;JvJans;DBXOracleDriver;JvNet;inetdb;JvAppFrm;JvDotNetCtrls;emsedge;fmx;FireDACIBDriver;fmxdae;vcledge;JvWizards;FireDACDBXDriver;dbexpress;IndyCore;RestCoreClient;vclx;ZParseSql;JvPageComps;dsnap;emsclient;DataSnapCommon;FireDACCommon;JvDB;RESTBackendComponents;DataSnapConnectors;RestClientHorse;VCLRESTComponents;soapserver;JclDeveloperTools;vclie;bindengine;DBXMySQLDriver;CloudService;FireDACOracleDriver;FireDACMySQLDriver;DBXFirebirdDriver;JvCmp;JvHMI;FireDACCommonODBC;FireDACCommonDriver;DataSnapClient;inet;IndyIPCommon;bindcompdbx;JvCustom;vcl;IndyIPServer;DBXSybaseASEDriver;JvXPCtrls;IndySystem;FireDACDb2Driver;dsnapcon;FireDACMSAccDriver;fmxFireDAC;FireDACInfxDriver;vclimg;ZDbc;Jcl;FireDAC;JvCore;emshosting;JvCrypt;FireDACSqliteDriver;FireDACPgDriver;FireDACASADriver;DBXOdbcDriver;FireDACTDataDriver;soaprtl;DbxCommonDriver;JvDlgs;JvRuntimeDesign;JvManagedThreads;DataSnapServer;xmlrtl;soapmidas;DataSnapNativeClient;fmxobj;vclwinx;FireDACDSDriver;rtl;emsserverresource;DbxClientDriver;JvTimeFramework;DBXSybaseASADriver;CustomIPTransport;vcldsnap;JvSystem;JvStdCtrls;bindcomp;appanalytics;ZPlain;DBXInformixDriver;IndyIPClient;bindcompvcl;JvDocking;dbxcds;VclSmp;JvPascalInterpreter;adortl;FireDACODBCDriver;JclVcl;DataSnapIndy10ServerTransport;dsnapxml;DataSnapProviderClient;dbrtl;IndyProtocols;inetdbxpress;FireDACMongoDBDriver;JvControls;JvPrintPreview;JclContainers;DataSnapServerMidas;$(DCC_UsePackage) 67 | Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace) 68 | Debug 69 | CompanyName=;FileDescription=$(MSBuildProjectName);FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProgramID=com.embarcadero.$(MSBuildProjectName);ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments= 70 | 1033 71 | 72 | 73 | DBXSqliteDriver;RESTComponents;fmxase;DBXDb2Driver;DBXInterBaseDriver;ZComponent;vclactnband;ZCore;vclFireDAC;bindcompvclsmp;emsclientfiredac;tethering;DataSnapFireDAC;FireDACADSDriver;DBXMSSQLDriver;DatasnapConnectorsFreePascal;FireDACMSSQLDriver;vcltouch;vcldb;bindcompfmx;DBXOracleDriver;inetdb;emsedge;fmx;FireDACIBDriver;fmxdae;vcledge;FireDACDBXDriver;dbexpress;IndyCore;vclx;ZParseSql;dsnap;emsclient;DataSnapCommon;FireDACCommon;RESTBackendComponents;DataSnapConnectors;VCLRESTComponents;soapserver;vclie;bindengine;DBXMySQLDriver;CloudService;FireDACOracleDriver;FireDACMySQLDriver;DBXFirebirdDriver;FireDACCommonODBC;FireDACCommonDriver;DataSnapClient;inet;IndyIPCommon;bindcompdbx;vcl;IndyIPServer;DBXSybaseASEDriver;IndySystem;FireDACDb2Driver;dsnapcon;FireDACMSAccDriver;fmxFireDAC;FireDACInfxDriver;vclimg;ZDbc;FireDAC;emshosting;FireDACSqliteDriver;FireDACPgDriver;FireDACASADriver;DBXOdbcDriver;FireDACTDataDriver;soaprtl;DbxCommonDriver;DataSnapServer;xmlrtl;soapmidas;DataSnapNativeClient;fmxobj;vclwinx;FireDACDSDriver;rtl;emsserverresource;DbxClientDriver;DBXSybaseASADriver;CustomIPTransport;vcldsnap;bindcomp;appanalytics;ZPlain;DBXInformixDriver;IndyIPClient;bindcompvcl;dbxcds;VclSmp;adortl;FireDACODBCDriver;DataSnapIndy10ServerTransport;dsnapxml;DataSnapProviderClient;dbrtl;IndyProtocols;inetdbxpress;FireDACMongoDBDriver;DataSnapServerMidas;$(DCC_UsePackage) 74 | 75 | 76 | DEBUG;$(DCC_Define) 77 | true 78 | false 79 | true 80 | true 81 | true 82 | 83 | 84 | false 85 | 86 | 87 | false 88 | RELEASE;$(DCC_Define) 89 | 0 90 | 0 91 | 92 | 93 | 94 | MainSource 95 | 96 | 97 | 98 | 99 | 100 | 101 | Base 102 | 103 | 104 | Cfg_1 105 | Base 106 | 107 | 108 | Cfg_2 109 | Base 110 | 111 | 112 | 113 | Delphi.Personality.12 114 | Console 115 | 116 | 117 | 118 | JSONBr_Tests.dpr 119 | 120 | 121 | 122 | False 123 | True 124 | False 125 | 126 | 127 | 128 | 129 | 130 | true 131 | 132 | 133 | 134 | 135 | true 136 | 137 | 138 | 139 | 140 | 141 | true 142 | 143 | 144 | 145 | 146 | 147 | 1 148 | 149 | 150 | 0 151 | 152 | 153 | 154 | 155 | classes 156 | 64 157 | 158 | 159 | classes 160 | 64 161 | 162 | 163 | 164 | 165 | res\xml 166 | 1 167 | 168 | 169 | res\xml 170 | 1 171 | 172 | 173 | 174 | 175 | library\lib\armeabi-v7a 176 | 1 177 | 178 | 179 | 180 | 181 | library\lib\armeabi 182 | 1 183 | 184 | 185 | library\lib\armeabi 186 | 1 187 | 188 | 189 | 190 | 191 | library\lib\armeabi-v7a 192 | 1 193 | 194 | 195 | 196 | 197 | library\lib\mips 198 | 1 199 | 200 | 201 | library\lib\mips 202 | 1 203 | 204 | 205 | 206 | 207 | library\lib\armeabi-v7a 208 | 1 209 | 210 | 211 | library\lib\arm64-v8a 212 | 1 213 | 214 | 215 | 216 | 217 | library\lib\armeabi-v7a 218 | 1 219 | 220 | 221 | 222 | 223 | res\drawable 224 | 1 225 | 226 | 227 | res\drawable 228 | 1 229 | 230 | 231 | 232 | 233 | res\values 234 | 1 235 | 236 | 237 | res\values 238 | 1 239 | 240 | 241 | 242 | 243 | res\values-v21 244 | 1 245 | 246 | 247 | res\values-v21 248 | 1 249 | 250 | 251 | 252 | 253 | res\values 254 | 1 255 | 256 | 257 | res\values 258 | 1 259 | 260 | 261 | 262 | 263 | res\drawable 264 | 1 265 | 266 | 267 | res\drawable 268 | 1 269 | 270 | 271 | 272 | 273 | res\drawable-xxhdpi 274 | 1 275 | 276 | 277 | res\drawable-xxhdpi 278 | 1 279 | 280 | 281 | 282 | 283 | res\drawable-xxxhdpi 284 | 1 285 | 286 | 287 | res\drawable-xxxhdpi 288 | 1 289 | 290 | 291 | 292 | 293 | res\drawable-ldpi 294 | 1 295 | 296 | 297 | res\drawable-ldpi 298 | 1 299 | 300 | 301 | 302 | 303 | res\drawable-mdpi 304 | 1 305 | 306 | 307 | res\drawable-mdpi 308 | 1 309 | 310 | 311 | 312 | 313 | res\drawable-hdpi 314 | 1 315 | 316 | 317 | res\drawable-hdpi 318 | 1 319 | 320 | 321 | 322 | 323 | res\drawable-xhdpi 324 | 1 325 | 326 | 327 | res\drawable-xhdpi 328 | 1 329 | 330 | 331 | 332 | 333 | res\drawable-mdpi 334 | 1 335 | 336 | 337 | res\drawable-mdpi 338 | 1 339 | 340 | 341 | 342 | 343 | res\drawable-hdpi 344 | 1 345 | 346 | 347 | res\drawable-hdpi 348 | 1 349 | 350 | 351 | 352 | 353 | res\drawable-xhdpi 354 | 1 355 | 356 | 357 | res\drawable-xhdpi 358 | 1 359 | 360 | 361 | 362 | 363 | res\drawable-xxhdpi 364 | 1 365 | 366 | 367 | res\drawable-xxhdpi 368 | 1 369 | 370 | 371 | 372 | 373 | res\drawable-xxxhdpi 374 | 1 375 | 376 | 377 | res\drawable-xxxhdpi 378 | 1 379 | 380 | 381 | 382 | 383 | res\drawable-small 384 | 1 385 | 386 | 387 | res\drawable-small 388 | 1 389 | 390 | 391 | 392 | 393 | res\drawable-normal 394 | 1 395 | 396 | 397 | res\drawable-normal 398 | 1 399 | 400 | 401 | 402 | 403 | res\drawable-large 404 | 1 405 | 406 | 407 | res\drawable-large 408 | 1 409 | 410 | 411 | 412 | 413 | res\drawable-xlarge 414 | 1 415 | 416 | 417 | res\drawable-xlarge 418 | 1 419 | 420 | 421 | 422 | 423 | res\values 424 | 1 425 | 426 | 427 | res\values 428 | 1 429 | 430 | 431 | 432 | 433 | 1 434 | 435 | 436 | 1 437 | 438 | 439 | 0 440 | 441 | 442 | 443 | 444 | 1 445 | .framework 446 | 447 | 448 | 1 449 | .framework 450 | 451 | 452 | 1 453 | .framework 454 | 455 | 456 | 0 457 | 458 | 459 | 460 | 461 | 1 462 | .dylib 463 | 464 | 465 | 1 466 | .dylib 467 | 468 | 469 | 1 470 | .dylib 471 | 472 | 473 | 0 474 | .dll;.bpl 475 | 476 | 477 | 478 | 479 | 1 480 | .dylib 481 | 482 | 483 | 1 484 | .dylib 485 | 486 | 487 | 1 488 | .dylib 489 | 490 | 491 | 1 492 | .dylib 493 | 494 | 495 | 1 496 | .dylib 497 | 498 | 499 | 1 500 | .dylib 501 | 502 | 503 | 0 504 | .bpl 505 | 506 | 507 | 508 | 509 | 0 510 | 511 | 512 | 0 513 | 514 | 515 | 0 516 | 517 | 518 | 0 519 | 520 | 521 | 0 522 | 523 | 524 | 0 525 | 526 | 527 | 0 528 | 529 | 530 | 0 531 | 532 | 533 | 0 534 | 535 | 536 | 537 | 538 | 1 539 | 540 | 541 | 1 542 | 543 | 544 | 545 | 546 | 547 | 548 | 549 | Contents\Resources 550 | 1 551 | 552 | 553 | Contents\Resources 554 | 1 555 | 556 | 557 | Contents\Resources 558 | 1 559 | 560 | 561 | 562 | 563 | library\lib\armeabi-v7a 564 | 1 565 | 566 | 567 | library\lib\arm64-v8a 568 | 1 569 | 570 | 571 | 1 572 | 573 | 574 | 1 575 | 576 | 577 | 1 578 | 579 | 580 | 1 581 | 582 | 583 | 1 584 | 585 | 586 | 1 587 | 588 | 589 | 1 590 | 591 | 592 | 0 593 | 594 | 595 | 596 | 597 | library\lib\armeabi-v7a 598 | 1 599 | 600 | 601 | 602 | 603 | 1 604 | 605 | 606 | 1 607 | 608 | 609 | 610 | 611 | ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF 612 | 1 613 | 614 | 615 | ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF 616 | 1 617 | 618 | 619 | ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF 620 | 1 621 | 622 | 623 | 624 | 625 | 626 | 627 | 628 | 1 629 | 630 | 631 | 1 632 | 633 | 634 | 1 635 | 636 | 637 | 638 | 639 | Assets 640 | 1 641 | 642 | 643 | Assets 644 | 1 645 | 646 | 647 | 648 | 649 | Assets 650 | 1 651 | 652 | 653 | Assets 654 | 1 655 | 656 | 657 | 658 | 659 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 660 | 1 661 | 662 | 663 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 664 | 1 665 | 666 | 667 | 668 | 669 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 670 | 1 671 | 672 | 673 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 674 | 1 675 | 676 | 677 | 678 | 679 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 680 | 1 681 | 682 | 683 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 684 | 1 685 | 686 | 687 | 688 | 689 | ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset 690 | 1 691 | 692 | 693 | ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset 694 | 1 695 | 696 | 697 | 698 | 699 | ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset 700 | 1 701 | 702 | 703 | ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset 704 | 1 705 | 706 | 707 | 708 | 709 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 710 | 1 711 | 712 | 713 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 714 | 1 715 | 716 | 717 | 718 | 719 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 720 | 1 721 | 722 | 723 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 724 | 1 725 | 726 | 727 | 728 | 729 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 730 | 1 731 | 732 | 733 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 734 | 1 735 | 736 | 737 | 738 | 739 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 740 | 1 741 | 742 | 743 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 744 | 1 745 | 746 | 747 | 748 | 749 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 750 | 1 751 | 752 | 753 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 754 | 1 755 | 756 | 757 | 758 | 759 | ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset 760 | 1 761 | 762 | 763 | ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset 764 | 1 765 | 766 | 767 | 768 | 769 | ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset 770 | 1 771 | 772 | 773 | ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset 774 | 1 775 | 776 | 777 | 778 | 779 | ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset 780 | 1 781 | 782 | 783 | ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset 784 | 1 785 | 786 | 787 | 788 | 789 | ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset 790 | 1 791 | 792 | 793 | ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset 794 | 1 795 | 796 | 797 | 798 | 799 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 800 | 1 801 | 802 | 803 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 804 | 1 805 | 806 | 807 | 808 | 809 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 810 | 1 811 | 812 | 813 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 814 | 1 815 | 816 | 817 | 818 | 819 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 820 | 1 821 | 822 | 823 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 824 | 1 825 | 826 | 827 | 828 | 829 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 830 | 1 831 | 832 | 833 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 834 | 1 835 | 836 | 837 | 838 | 839 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 840 | 1 841 | 842 | 843 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 844 | 1 845 | 846 | 847 | 848 | 849 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 850 | 1 851 | 852 | 853 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 854 | 1 855 | 856 | 857 | 858 | 859 | 860 | 861 | 862 | 863 | 864 | 865 | 866 | 867 | 868 | 869 | 870 | 871 | 12 872 | 873 | 874 | 875 | 876 | 877 | -------------------------------------------------------------------------------- /Test Delphi/JSONBr_Tests.identcache: -------------------------------------------------------------------------------- 1 | 9D:\PROJETOS-Brasil\JSONBr\Source\Core\jsonbr.builders.pas3D:\PROJETOS-Brasil\JSONBr\Test Delphi\UnitTests.pas0D:\PROJETOS-Brasil\JSONBr\Source\Core\jsonbr.pas7D:\PROJETOS-Brasil\JSONBr\Source\Core\jsonbr.writer.pas6D:\PROJETOS-Brasil\JSONBr\Test Delphi\JSONBr_Tests.dpr -------------------------------------------------------------------------------- /Test Delphi/JSONBr_Tests.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HashLoad/jsonbr/42fc0086b85513832828df60ad5e4dfa8dd0905f/Test Delphi/JSONBr_Tests.pas -------------------------------------------------------------------------------- /Test Delphi/JSONBr_Tests.res: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HashLoad/jsonbr/42fc0086b85513832828df60ad5e4dfa8dd0905f/Test Delphi/JSONBr_Tests.res -------------------------------------------------------------------------------- /Test Delphi/JSONBr_Tests.stat: -------------------------------------------------------------------------------- 1 | [Stats] 2 | EditorSecs=1466 3 | DesignerSecs=1 4 | InspectorSecs=1 5 | CompileSecs=45166 6 | OtherSecs=90 7 | StartTime=13/08/2022 16:46:43 8 | RealKeys=0 9 | EffectiveKeys=0 10 | DebugSecs=10 11 | -------------------------------------------------------------------------------- /Test Delphi/UnitTests.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HashLoad/jsonbr/42fc0086b85513832828df60ad5e4dfa8dd0905f/Test Delphi/UnitTests.pas -------------------------------------------------------------------------------- /Test Performance/Test.Consts.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HashLoad/jsonbr/42fc0086b85513832828df60ad5e4dfa8dd0905f/Test Performance/Test.Consts.pas -------------------------------------------------------------------------------- /Test Performance/Test.JSON.pas: -------------------------------------------------------------------------------- 1 | unit Test.JSON; 2 | 3 | interface 4 | 5 | uses 6 | System.Diagnostics, 7 | System.SysUtils, 8 | Winapi.Windows, 9 | Vcl.Graphics, 10 | DUnitX.TestFramework, 11 | Generics.Collections, 12 | Test.Model; 13 | 14 | type 15 | [TestFixture] 16 | TTestJSON = class 17 | public 18 | [Setup] 19 | procedure Setup; 20 | [TearDown] 21 | procedure TearDown; 22 | // JSONBr 23 | [Test] 24 | procedure JSONBrLoop50000; 25 | [Test] 26 | procedure JSONBrJsonToObject; 27 | [Test] 28 | procedure JSONBrObjectToJson; 29 | [Test] 30 | procedure JSONBrObjectListToJson; 31 | [Test] 32 | procedure JSONBrJsonToObjectList; 33 | // Nativo Delphi 34 | [Test] 35 | procedure RESTJsonLoop50000; 36 | [Test] 37 | procedure RESTJsonJsonToObject; 38 | [Test] 39 | procedure RESTJsonObjectToJson; 40 | [Test] 41 | procedure RESTJsonObjectListToJson; 42 | [Test] 43 | procedure RESTJsonJsonToObjectList; 44 | // x-superobject 45 | [Test] 46 | procedure XSuperObjectLoop50000; 47 | [Test] 48 | procedure XSuperObjectJsonToObject; 49 | [Test] 50 | procedure XSuperObjectObjectToJson; 51 | [Test] 52 | procedure XSuperObjectObjectListToJson; 53 | [Test] 54 | procedure XSuperObjectJsonToObjectList; 55 | end; 56 | 57 | implementation 58 | 59 | uses 60 | Test.Consts, 61 | jsonbr, 62 | jsonbr.builders, 63 | JSON, 64 | REST.Json, 65 | DUnitX.utils, 66 | XSuperJSON, 67 | XSuperObject, 68 | test.res_json, 69 | test.json_br, 70 | test.xsuper; 71 | 72 | procedure TTestJSON.Setup; 73 | begin 74 | 75 | end; 76 | 77 | procedure TTestJSON.TearDown; 78 | begin 79 | 80 | end; 81 | 82 | procedure TTestJSON.XSuperObjectJsonToObject; 83 | var 84 | Stopwatch: TStopwatch; 85 | begin 86 | Stopwatch := TStopwatch.StartNew; 87 | _XSuperObjectJsonToObject; 88 | Stopwatch.Stop; 89 | 90 | System.Writeln(Format('Gerando 1 objeto do json object(' + cMESSAGE, [Stopwatch.ElapsedMilliseconds / 100, Stopwatch.ElapsedMilliseconds]) + ')'); 91 | end; 92 | 93 | procedure TTestJSON.XSuperObjectJsonToObjectList; 94 | var 95 | Stopwatch: TStopwatch; 96 | begin 97 | Stopwatch := TStopwatch.StartNew; 98 | _XSuperObjectJsonToObjectList; 99 | Stopwatch.Stop; 100 | 101 | System.Writeln(Format('Gerando uma list com 5000 objetos de um json array(' + cMESSAGE, [Stopwatch.ElapsedMilliseconds / 100, Stopwatch.ElapsedMilliseconds]) + ')'); 102 | end; 103 | 104 | procedure TTestJSON.XSuperObjectLoop50000; 105 | var 106 | Stopwatch: TStopwatch; 107 | begin 108 | SetColorConsole(clPurple); 109 | System.Writeln(' '); 110 | System.Writeln('.XSuperJSON'); 111 | 112 | Stopwatch := TStopwatch.StartNew; 113 | _XSuperObjectLoop50000; 114 | Stopwatch.Stop; 115 | 116 | System.Writeln(Format('..Loop gerando 50.000 objetos de um json object(' + cMESSAGE, [Stopwatch.ElapsedMilliseconds / 100, Stopwatch.ElapsedMilliseconds]) + ')'); 117 | end; 118 | 119 | procedure TTestJSON.XSuperObjectObjectListToJson; 120 | var 121 | Stopwatch: TStopwatch; 122 | begin 123 | Stopwatch := TStopwatch.StartNew; 124 | _XSuperObjectObjectListToJson; 125 | Stopwatch.Stop; 126 | 127 | System.Writeln(Format('Gerando json array de uma lista com 5000 objetos(' + cMESSAGE, [Stopwatch.ElapsedMilliseconds / 100, Stopwatch.ElapsedMilliseconds]) + ')'); 128 | end; 129 | 130 | procedure TTestJSON.XSuperObjectObjectToJson; 131 | var 132 | Stopwatch: TStopwatch; 133 | begin 134 | Stopwatch := TStopwatch.StartNew; 135 | _XSuperObjectObjectToJson; 136 | Stopwatch.Stop; 137 | 138 | System.Writeln(Format('Gerando 1 json object de um objeto(' + cMESSAGE, [Stopwatch.ElapsedMilliseconds / 100, Stopwatch.ElapsedMilliseconds]) + ')'); 139 | end; 140 | 141 | procedure TTestJSON.JSONBrJsonToObject; 142 | var 143 | Stopwatch: TStopwatch; 144 | begin 145 | Stopwatch := TStopwatch.StartNew; 146 | _JSONBrJsonToObject; 147 | Stopwatch.Stop; 148 | 149 | System.Writeln(Format('Gerando 1 objeto do json object(' + cMESSAGE, [Stopwatch.ElapsedMilliseconds / 100, Stopwatch.ElapsedMilliseconds]) + ')'); 150 | end; 151 | 152 | procedure TTestJSON.JSONBrJsonToObjectList; 153 | var 154 | Stopwatch: TStopwatch; 155 | begin 156 | Stopwatch := TStopwatch.StartNew; 157 | _JSONBrJsonToObjectList; 158 | Stopwatch.Stop; 159 | 160 | System.Writeln(Format('Gerando uma list com 5000 objetos de um json array(' + cMESSAGE, [Stopwatch.ElapsedMilliseconds / 100, Stopwatch.ElapsedMilliseconds]) + ')'); 161 | end; 162 | 163 | procedure TTestJSON.JSONBrLoop50000; 164 | var 165 | Stopwatch: TStopwatch; 166 | begin 167 | SetColorConsole(clGreen); 168 | System.Writeln(' '); 169 | System.Writeln('.JSONBr Framework'); 170 | 171 | Stopwatch := TStopwatch.StartNew; 172 | _JSONBrLoop50000; 173 | Stopwatch.Stop; 174 | 175 | System.Writeln(Format('..Loop gerando 50.000 objetos de um json object(' + cMESSAGE, [Stopwatch.ElapsedMilliseconds / 100, Stopwatch.ElapsedMilliseconds]) + ')'); 176 | end; 177 | 178 | procedure TTestJSON.JSONBrObjectListToJson; 179 | var 180 | Stopwatch: TStopwatch; 181 | begin 182 | Stopwatch := TStopwatch.StartNew; 183 | _JSONBrObjectListToJson; 184 | Stopwatch.Stop; 185 | 186 | System.Writeln(Format('Gerando json array de uma lista com 5000 objetos(' + cMESSAGE, [Stopwatch.ElapsedMilliseconds / 100, Stopwatch.ElapsedMilliseconds]) + ')'); 187 | end; 188 | 189 | procedure TTestJSON.JSONBrObjectToJson; 190 | var 191 | Stopwatch: TStopwatch; 192 | begin 193 | Stopwatch := TStopwatch.StartNew; 194 | _JSONBrObjectToJson; 195 | Stopwatch.Stop; 196 | 197 | System.Writeln(Format('Gerando 1 json object de um objeto(' + cMESSAGE, [Stopwatch.ElapsedMilliseconds / 100, Stopwatch.ElapsedMilliseconds]) + ')'); 198 | end; 199 | 200 | procedure TTestJSON.RESTJsonJsonToObject; 201 | var 202 | Stopwatch: TStopwatch; 203 | begin 204 | Stopwatch := TStopwatch.StartNew; 205 | _RESTJsonJsonToObject; 206 | Stopwatch.Stop; 207 | 208 | System.Writeln(Format('Gerando 1 objeto do json object(' + cMESSAGE, [Stopwatch.ElapsedMilliseconds / 100, Stopwatch.ElapsedMilliseconds]) + ')'); 209 | end; 210 | 211 | procedure TTestJSON.RESTJsonJsonToObjectList; 212 | var 213 | Stopwatch: TStopwatch; 214 | begin 215 | Stopwatch := TStopwatch.StartNew; 216 | _RESTJsonJsonToObjectList; 217 | Stopwatch.Stop; 218 | 219 | System.Writeln(Format('Gerando uma list com 5000 objetos de um json array(' + cMESSAGE, [Stopwatch.ElapsedMilliseconds / 100, Stopwatch.ElapsedMilliseconds]) + ')'); 220 | end; 221 | 222 | procedure TTestJSON.RESTJsonLoop50000; 223 | var 224 | Stopwatch: TStopwatch; 225 | begin 226 | SetColorConsole(clRed); 227 | System.Writeln(' '); 228 | System.Writeln('.REST.Json Delphi'); 229 | 230 | Stopwatch := TStopwatch.StartNew; 231 | _RESTJsonLoop50000; 232 | Stopwatch.Stop; 233 | 234 | System.Writeln(Format('..Loop gerando 50.000 objetos de um json object(' + cMESSAGE, [Stopwatch.ElapsedMilliseconds / 100, Stopwatch.ElapsedMilliseconds]) + ')'); 235 | end; 236 | 237 | procedure TTestJSON.RESTJsonObjectListToJson; 238 | var 239 | Stopwatch: TStopwatch; 240 | begin 241 | Stopwatch := TStopwatch.StartNew; 242 | _RESTJsonObjectListToJson; 243 | Stopwatch.Stop; 244 | 245 | System.Writeln(Format('Gerando json array de uma lista com 5000 objetos(' + cMESSAGE, [Stopwatch.ElapsedMilliseconds / 100, Stopwatch.ElapsedMilliseconds]) + ')'); 246 | end; 247 | 248 | procedure TTestJSON.RESTJsonObjectToJson; 249 | var 250 | Stopwatch: TStopwatch; 251 | begin 252 | Stopwatch := TStopwatch.StartNew; 253 | _RESTJsonObjectToJson; 254 | Stopwatch.Stop; 255 | 256 | System.Writeln(Format('Gerando 1 json object de um objeto(' + cMESSAGE, [Stopwatch.ElapsedMilliseconds / 100, Stopwatch.ElapsedMilliseconds]) + ')'); 257 | end; 258 | 259 | initialization 260 | TDUnitX.RegisterTestFixture(TTestJSON); 261 | 262 | end. 263 | -------------------------------------------------------------------------------- /Test Performance/Test.Model.pas: -------------------------------------------------------------------------------- 1 | unit Test.Model; 2 | 3 | interface 4 | 5 | uses 6 | System.Generics.Collections; 7 | 8 | {$M+} 9 | 10 | type 11 | TGlossDefDTO = class 12 | private 13 | FGlossSeeAlso: TArray; 14 | FPara: string; 15 | published 16 | property GlossSeeAlso: TArray read FGlossSeeAlso write FGlossSeeAlso; 17 | property Para: string read FPara write FPara; 18 | end; 19 | 20 | TGlossEntryDTO = class 21 | private 22 | FAbbrev: string; 23 | FAcronym: string; 24 | FGlossDef: TGlossDefDTO; 25 | FGlossSee: string; 26 | FGlossTerm: string; 27 | FID: string; 28 | FSortAs: string; 29 | published 30 | property Abbrev: string read FAbbrev write FAbbrev; 31 | property Acronym: string read FAcronym write FAcronym; 32 | property GlossDef: TGlossDefDTO read FGlossDef write FGlossDef; 33 | property GlossSee: string read FGlossSee write FGlossSee; 34 | property GlossTerm: string read FGlossTerm write FGlossTerm; 35 | property ID: string read FID write FID; 36 | property SortAs: string read FSortAs write FSortAs; 37 | public 38 | constructor Create; 39 | destructor Destroy; override; 40 | end; 41 | 42 | TGlossListDTO = class 43 | private 44 | FGlossEntry: TGlossEntryDTO; 45 | published 46 | property GlossEntry: TGlossEntryDTO read FGlossEntry write FGlossEntry; 47 | public 48 | constructor Create; 49 | destructor Destroy; override; 50 | end; 51 | 52 | TGlossDivDTO = class 53 | private 54 | FGlossList: TGlossListDTO; 55 | FTitle: string; 56 | published 57 | property GlossList: TGlossListDTO read FGlossList write FGlossList; 58 | property Title: string read FTitle write FTitle; 59 | public 60 | constructor Create; 61 | destructor Destroy; override; 62 | end; 63 | 64 | TGlossaryDTO = class 65 | private 66 | FGlossDiv: TGlossDivDTO; 67 | FTitle: string; 68 | published 69 | property GlossDiv: TGlossDivDTO read FGlossDiv write FGlossDiv; 70 | property Title: string read FTitle write FTitle; 71 | public 72 | constructor Create; 73 | destructor Destroy; override; 74 | end; 75 | 76 | TRootDTO = class 77 | private 78 | FGlossary: TGlossaryDTO; 79 | published 80 | property Glossary: TGlossaryDTO read FGlossary write FGlossary; 81 | public 82 | constructor Create; 83 | destructor Destroy; override; 84 | end; 85 | 86 | implementation 87 | 88 | { TGlossEntryDTO } 89 | 90 | constructor TGlossEntryDTO.Create; 91 | begin 92 | FGlossDef := TGlossDefDTO.Create; 93 | end; 94 | 95 | destructor TGlossEntryDTO.Destroy; 96 | begin 97 | FGlossDef.Free; 98 | inherited; 99 | end; 100 | 101 | { TGlossListDTO } 102 | 103 | constructor TGlossListDTO.Create; 104 | begin 105 | FGlossEntry := TGlossEntryDTO.Create; 106 | end; 107 | 108 | destructor TGlossListDTO.Destroy; 109 | begin 110 | FGlossEntry.Free; 111 | inherited; 112 | end; 113 | 114 | { TGlossDivDTO } 115 | 116 | constructor TGlossDivDTO.Create; 117 | begin 118 | FGlossList := TGlossListDTO.Create; 119 | end; 120 | 121 | destructor TGlossDivDTO.Destroy; 122 | begin 123 | FGlossList.Free; 124 | inherited; 125 | end; 126 | 127 | { TGlossaryDTO } 128 | 129 | constructor TGlossaryDTO.Create; 130 | begin 131 | FGlossDiv := TGlossDivDTO.Create; 132 | end; 133 | 134 | destructor TGlossaryDTO.Destroy; 135 | begin 136 | FGlossDiv.Free; 137 | inherited; 138 | end; 139 | 140 | { TRootDTO } 141 | 142 | constructor TRootDTO.Create; 143 | begin 144 | FGlossary := TGlossaryDTO.Create; 145 | end; 146 | 147 | destructor TRootDTO.Destroy; 148 | begin 149 | FGlossary.Free; 150 | inherited; 151 | end; 152 | 153 | end. 154 | -------------------------------------------------------------------------------- /Test Performance/TestJSON.dpr: -------------------------------------------------------------------------------- 1 | program TestJSON; 2 | 3 | {$IFNDEF TESTINSIGHT} 4 | {$APPTYPE CONSOLE} 5 | {$ENDIF} 6 | {$STRONGLINKTYPES ON} 7 | uses 8 | System.SysUtils, 9 | Vcl.Graphics, 10 | {$IFDEF TESTINSIGHT} 11 | TestInsight.DUnitX, 12 | {$ELSE} 13 | DUnitX.Loggers.Console, 14 | DUnitX.Loggers.Xml.NUnit, 15 | {$ENDIF } 16 | DUnitX.TestFramework, 17 | Test.JSON in 'Test.JSON.pas', 18 | Test.Consts in 'Test.Consts.pas', 19 | Test.Model in 'Test.Model.pas', 20 | jsonbr.builders in '..\Source\Core\jsonbr.builders.pas', 21 | jsonbr.writer in '..\Source\Core\jsonbr.writer.pas', 22 | XSuperJSON in 'x-superobject\XSuperJSON.pas', 23 | XSuperObject in 'x-superobject\XSuperObject.pas', 24 | test.res_json in 'test.res_json.pas', 25 | test.json_br in 'test.json_br.pas', 26 | test.xsuper in 'test.xsuper.pas', 27 | jsonbr in '..\Source\jsonbr.pas'; 28 | 29 | {$IFNDEF TESTINSIGHT} 30 | var 31 | runner: ITestRunner; 32 | results: IRunResults; 33 | logger: ITestLogger; 34 | nunitLogger : ITestLogger; 35 | {$ENDIF} 36 | begin 37 | {$IFDEF TESTINSIGHT} 38 | TestInsight.DUnitX.RunRegisteredTests; 39 | {$ELSE} 40 | try 41 | //Check command line options, will exit if invalid 42 | TDUnitX.CheckCommandLine; 43 | //Create the test runner 44 | runner := TDUnitX.CreateRunner; 45 | //Tell the runner to use RTTI to find Fixtures 46 | runner.UseRTTI := True; 47 | //When true, Assertions must be made during tests; 48 | runner.FailsOnNoAsserts := False; 49 | 50 | //tell the runner how we will log things 51 | //Log to the console window if desired 52 | // if TDUnitX.Options.ConsoleMode <> TDunitXConsoleMode.Off then 53 | // begin 54 | // logger := TDUnitXConsoleLogger.Create(True {TDUnitX.Options.ConsoleMode = TDunitXConsoleMode.Quiet}); 55 | // runner.AddLogger(logger); 56 | // end; 57 | //Generate an NUnit compatible XML File 58 | nunitLogger := TDUnitXXMLNUnitFileLogger.Create(TDUnitX.Options.XMLOutputFile); 59 | runner.AddLogger(nunitLogger); 60 | 61 | //Run tests 62 | results := runner.Execute; 63 | if not results.AllPassed then 64 | System.ExitCode := EXIT_ERRORS; 65 | 66 | {$IFNDEF CI} 67 | //We don't want this happening when running under CI. 68 | TDUnitX.Options.ExitBehavior := TDUnitXExitBehavior.Pause; 69 | if TDUnitX.Options.ExitBehavior = TDUnitXExitBehavior.Pause then 70 | begin 71 | SetColorConsole(clWhite); 72 | System.Writeln(' '); 73 | System.Write('Done.. press key to quit.'); 74 | System.Readln; 75 | end; 76 | {$ENDIF} 77 | except 78 | on E: Exception do 79 | System.Writeln(E.ClassName, ': ', E.Message); 80 | end; 81 | {$ENDIF} 82 | end. 83 | -------------------------------------------------------------------------------- /Test Performance/TestJSON.res: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HashLoad/jsonbr/42fc0086b85513832828df60ad5e4dfa8dd0905f/Test Performance/TestJSON.res -------------------------------------------------------------------------------- /Test Performance/TestJSON.stat: -------------------------------------------------------------------------------- 1 | [Stats] 2 | EditorSecs=9836 3 | DesignerSecs=1 4 | InspectorSecs=1 5 | CompileSecs=151151 6 | OtherSecs=117 7 | StartTime=13/12/2020 18:09:11 8 | RealKeys=0 9 | EffectiveKeys=0 10 | DebugSecs=594 11 | -------------------------------------------------------------------------------- /Test Performance/test.json_br.pas: -------------------------------------------------------------------------------- 1 | unit test.json_br; 2 | 3 | interface 4 | 5 | uses 6 | System.SysUtils, 7 | Winapi.Windows, 8 | Vcl.Graphics, 9 | Generics.Collections, 10 | Test.Model, 11 | Test.Consts, 12 | jsonbr, 13 | jsonbr.builders; 14 | 15 | procedure _JSONBrLoop50000; 16 | procedure _JSONBrJsonToObject; 17 | procedure _JSONBrObjectToJson; 18 | procedure _JSONBrObjectListToJson; 19 | procedure _JSONBrJsonToObjectList; 20 | 21 | implementation 22 | 23 | procedure _JSONBrLoop50000; 24 | var 25 | LList: TObjectList; 26 | LObject: TRootDTO; 27 | LFor: Integer; 28 | begin 29 | LList := TObjectList.Create; 30 | try 31 | for LFor := 1 to SAMPLE_JSON_1_COUNT do 32 | begin 33 | LObject := TJSONBr.JsonToObject(SAMPLE_JSON_1); 34 | LList.Add(LObject); 35 | end; 36 | finally 37 | LList.Clear; 38 | LList.Free; 39 | end; 40 | end; 41 | 42 | procedure _JSONBrJsonToObject; 43 | var 44 | LObject: TRootDTO; 45 | begin 46 | try 47 | LObject := TJSONBr.JsonToObject(SAMPLE_JSON_1); 48 | finally 49 | LObject.Free; 50 | end; 51 | end; 52 | 53 | procedure _JSONBrObjectToJson; 54 | var 55 | LJson: String; 56 | begin 57 | LJson := TJSONBr.ObjectToJsonString(FObject); 58 | end; 59 | 60 | procedure _JSONBrObjectListToJson; 61 | var 62 | LJsonArray: String; 63 | begin 64 | LJsonArray := TJSONBr.ObjectListToJsonString(FObjectList5000); 65 | end; 66 | 67 | procedure _JSONBrJsonToObjectList; 68 | var 69 | LList: TObjectList; 70 | begin 71 | try 72 | LList := TJSONBr.JsonToObjectList(FJsonBrArray); 73 | finally 74 | LList.Clear; 75 | LList.Free; 76 | end; 77 | end; 78 | 79 | end. 80 | -------------------------------------------------------------------------------- /Test Performance/test.res_json.pas: -------------------------------------------------------------------------------- 1 | unit test.res_json; 2 | 3 | interface 4 | 5 | uses 6 | System.SysUtils, 7 | Winapi.Windows, 8 | Vcl.Graphics, 9 | Generics.Collections, 10 | Test.Model, 11 | Test.Consts, 12 | JSON, 13 | REST.Json; 14 | 15 | procedure _RESTJsonLoop50000; 16 | procedure _RESTJsonJsonToObject; 17 | procedure _RESTJsonObjectToJson; 18 | procedure _RESTJsonObjectListToJson; 19 | procedure _RESTJsonJsonToObjectList; 20 | 21 | implementation 22 | 23 | procedure _RESTJsonLoop50000; 24 | var 25 | LList: TObjectList; 26 | LObject: TRootDTO; 27 | LFor: Integer; 28 | begin 29 | LList := TObjectList.Create; 30 | try 31 | for LFor := 1 to SAMPLE_JSON_1_COUNT do 32 | begin 33 | LObject := REST.Json.TJson.JsonToObject(SAMPLE_JSON_1); 34 | LList.Add(LObject); 35 | end; 36 | finally 37 | LList.Clear; 38 | LList.Free; 39 | end; 40 | end; 41 | 42 | procedure _RESTJsonJsonToObject; 43 | var 44 | LObject: TRootDTO; 45 | begin 46 | try 47 | LObject := REST.Json.TJson.JsonToObject(SAMPLE_JSON_1); 48 | finally 49 | LObject.Free; 50 | end; 51 | end; 52 | 53 | procedure _RESTJsonObjectToJson; 54 | var 55 | LJson: String; 56 | begin 57 | LJson := REST.Json.TJson.ObjectToJsonString(FObject); 58 | end; 59 | 60 | procedure _RESTJsonObjectListToJson; 61 | var 62 | LJsonArray: String; 63 | begin 64 | LJsonArray := REST.Json.TJson.ObjectToJsonString(FObjectList5000); 65 | end; 66 | 67 | procedure _RESTJsonJsonToObjectList; 68 | var 69 | LList: TObjectList; 70 | begin 71 | LList := TObjectList.Create; 72 | try 73 | LList := REST.Json.TJson.JsonToObject>(FJsonArray); 74 | finally 75 | LList.Clear; 76 | LList.Free; 77 | end; 78 | end; 79 | 80 | end. 81 | -------------------------------------------------------------------------------- /Test Performance/test.xsuper.pas: -------------------------------------------------------------------------------- 1 | unit test.xsuper; 2 | 3 | interface 4 | 5 | uses 6 | System.SysUtils, 7 | Winapi.Windows, 8 | Vcl.Graphics, 9 | Generics.Collections, 10 | Test.Model, 11 | Test.Consts, 12 | XSuperJSON, 13 | XSuperObject; 14 | 15 | procedure _XSuperObjectLoop50000; 16 | procedure _XSuperObjectJsonToObject; 17 | procedure _XSuperObjectObjectToJson; 18 | procedure _XSuperObjectObjectListToJson; 19 | procedure _XSuperObjectJsonToObjectList; 20 | 21 | implementation 22 | 23 | procedure _XSuperObjectLoop50000; 24 | var 25 | LList: TObjectList; 26 | LObject: TRootDTO; 27 | LFor: Integer; 28 | begin 29 | LList := TObjectList.Create; 30 | try 31 | for LFor := 1 to SAMPLE_JSON_1_COUNT do 32 | begin 33 | LObject := XSuperObject.TJSON.Parse(SAMPLE_JSON_1); 34 | LList.Add(LObject); 35 | end; 36 | finally 37 | LList.Clear; 38 | LList.Free; 39 | end; 40 | end; 41 | 42 | procedure _XSuperObjectJsonToObject; 43 | var 44 | LObject: TRootDTO; 45 | begin 46 | try 47 | LObject := XSuperObject.TJSON.Parse(SAMPLE_JSON_1); 48 | finally 49 | LObject.Free; 50 | end; 51 | end; 52 | 53 | procedure _XSuperObjectJsonToObjectList; 54 | var 55 | LList: TObjectList; 56 | begin 57 | LList := TObjectList.Create; 58 | try 59 | LList := XSuperObject.TJSON.Parse>(FJsonArray); 60 | finally 61 | LList.Clear; 62 | LList.Free; 63 | end; 64 | end; 65 | 66 | procedure _XSuperObjectObjectListToJson; 67 | var 68 | LJsonArray: String; 69 | begin 70 | LJsonArray := XSuperObject.TJSON.Stringify>(FObjectList5000); 71 | end; 72 | 73 | procedure _XSuperObjectObjectToJson; 74 | var 75 | LJson: String; 76 | begin 77 | LJson := XSuperObject.TJSON.Stringify(FObject); 78 | end; 79 | 80 | end. 81 | 82 | 83 | -------------------------------------------------------------------------------- /Test Performance/x-superobject/XSuperObject.inc: -------------------------------------------------------------------------------- 1 | (* 2 | * XSuperObject - Simple JSON Framework 3 | * 4 | * The MIT License (MIT) 5 | * Copyright (c) 2015 Onur YILDIZ 6 | * 7 | * 8 | * Permission is hereby granted, free of charge, to any person 9 | * obtaining a copy of this software and associated documentation 10 | * files (the "Software"), to deal in the Software without restriction, 11 | * including without limitation the rights to use, copy, modify, 12 | * merge, publish, distribute, sublicense, and/or sell copies of the Software, 13 | * and to permit persons to whom the Software is furnished to do so, 14 | * subject to the following conditions: 15 | * 16 | * The above copyright notice and this permission notice shall 17 | * be included in all copies or substantial portions of the Software. 18 | * 19 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 20 | * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES 21 | * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 22 | * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, 23 | * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 24 | * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH 25 | * THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 26 | * 27 | *) 28 | 29 | (* 30 | * Marshalling Options 31 | *) 32 | {$DEFINE SP_DATASET} 33 | {$DEFINE SP_STREAM} 34 | 35 | // ** Zero Based Strings Definations... 36 | {$UNDEF XE2UP} 37 | {$IFDEF DCC} 38 | {$IF CompilerVersion >= 24} 39 | {$DEFINE XE2UP} 40 | {$ENDIF} 41 | {$ENDIF} -------------------------------------------------------------------------------- /boss-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "hash": "d41d8cd98f00b204e9800998ecf8427e", 3 | "updated": "2020-11-24T10:09:03.2428753-03:00", 4 | "installedModules": {} 5 | } -------------------------------------------------------------------------------- /boss.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "JSONBr", 3 | "description": "", 4 | "version": "1.1.6", 5 | "homepage": "www.isaquepinheiro.com.br", 6 | "mainsrc": "Source/", 7 | "projects": [], 8 | "dependencies": {} 9 | } -------------------------------------------------------------------------------- /readme.txt: -------------------------------------------------------------------------------- 1 | Link da dependência 2 | https://github.com/HashLoad/JSONBr/archive/refs/heads/master.zip --------------------------------------------------------------------------------