├── .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 |
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 | [](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 | [](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 | [](https://t.me/hashload)
173 |
174 | ## 💲 Doação
175 | [](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.pas 3D:\PROJETOS-Brasil\JSONBr\Test Delphi\UnitTests.pas 0D:\PROJETOS-Brasil\JSONBr\Source\Core\jsonbr.pas 7D:\PROJETOS-Brasil\JSONBr\Source\Core\jsonbr.writer.pas 6D:\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
--------------------------------------------------------------------------------