https://github.com/hashload/jsonbr
JSONBr Framework for Delphi (Isaque Pinheiro)
https://github.com/hashload/jsonbr
Last synced: 7 months ago
JSON representation
JSONBr Framework for Delphi (Isaque Pinheiro)
- Host: GitHub
- URL: https://github.com/hashload/jsonbr
- Owner: HashLoad
- Created: 2022-06-07T16:07:53.000Z (over 3 years ago)
- Default Branch: master
- Last Pushed: 2024-03-30T14:18:38.000Z (almost 2 years ago)
- Last Synced: 2024-04-14T00:25:40.611Z (almost 2 years ago)
- Language: Pascal
- Homepage: https://www.isaquepinheiro.com.br
- Size: 346 KB
- Stars: 7
- Watchers: 7
- Forks: 4
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# JSONBr Library for Delphi
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.
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.
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
## 🏛 Delphi Versions
Embarcadero Delphi XE e superior.
## ⚙️ Instalação
Instalação usando o [`boss install`]
```sh
boss install "https://github.com/HashLoad/jsonbr"
```
## ⚡️ Como usar
```Delphi
procedure TTestJSONBr.Loop50000;
var
LList: TObjectList;
LObject: TRootDTO;
LFor: Integer;
LInit, LEnd: Cardinal;
begin
LList := TObjectList.Create;
LList.OwnsObjects := True;
try
LInit := GetTickCount;
for LFor := 1 to SAMPLE_JSON_1_COUNT do
begin
LObject := TJSONBr.JsonToObject(SAMPLE_JSON_1);
LList.Add(LObject);
end;
LEnd := GetTickCount;
//
System.Writeln(Format('..gerando 50.000 objetos de um json object(' +
cMESSAGE, [(LEnd - LInit) / 1000, (LEnd - LInit)]) + ')');
finally
LList.Clear;
LList.Free;
end;
end;
```
```Delphi
procedure TForm1.Button2Click(Sender: TObject);
var
Person: TPerson;
Person1: TpersonSub;
Person2: TpersonSub;
begin
Person := TPerson.Create;
try
Person.Id := 1;
Person.FirstName := '';
Person.LastName := 'Json';
Person.Age := 10;
Person.Salary := 100.10;
Person.Date := Now;
Person.Pessoa.Id := 2;
Person.Pessoa.FirstName := 'Json 2';
Person.Pessoa.LastName := 'Parse 2';
Person.Pessoa.Age := 20;
Person.Pessoa.Salary := 200.20;
Person.Imagem := '12345678901234567890';
Person1 := TPersonSub.Create;
Person1.Id := 3;
Person1.FirstName := 'Json 3';
Person1.LastName := 'Parse 3';
Person1.Age := 30;
Person1.Salary := 300.30;
Person2 := TPersonSub.Create;
Person2.Id := 4;
Person2.FirstName := 'Json 4';
Person2.LastName := 'Parse 4';
Person2.Age := 40;
Person2.Salary := 400.40;
Person.Pessoas.Add(Person1);
Person.Pessoas.Add(Person2);
TJSONBr.OnSetValue := nil; // Criando seu proprio tratamento de tipos
TJSONBr.OnGetValue := nil; // Criando seu proprio tratamento de tipos
Memo1.Lines.Text := TJSONBr.ObjectToJsonString(Person);
finally
Person.Free;
end;
end;
```
```Delphi
procedure TTestJSONBr.AddPair_1;
var
LResult: String;
const
LJSON = '[{"ID":1,"Name":"Json"},[{"ID":2,"Name":"Json 2"},{"ID":3,"Name":"Json 3"}]]';
begin
LResult := TJSONBr
.BeginArray
.BeginObject
.AddPair('ID', 1)
.AddPair('Name', 'Json')
.EndObject
.BeginArray
.BeginObject
.AddPair('ID', 2)
.AddPair('Name', 'Json 2')
.EndObject
.BeginObject
.AddPair('ID', 3)
.AddPair('Name', 'Json 3')
.EndObject
.EndArray
.EndArray
.ToJSON;
end;
```
```Delphi
procedure TTestJSONBr.AddValue_1;
var
LResult: String;
const
LJSON = '{"nome":"Fulano","idade":90,"filmes_preferidos":["Pulp Fiction","Clube da Luta"],"contatos"
:{"telefone":"(11)91111-2222","emails":["fulano@gmail.com","fulano@yahoo.com"]}}';
begin
LResult := TJSONBr
.BeginObject
.AddPair('nome', 'Fulano')
.AddPair('idade', 90)
.AddPairArray('filmes_preferidos', ['Pulp Fiction', 'Clube da Luta'])
.BeginObject('contatos')
.AddPair('telefone', '(11)91111-2222')
.AddPairArray('emails', ['fulano@gmail.com', 'fulano@yahoo.com'])
.EndObject
.EndObject
.ToJSON;
end;
```
## ✍️ License
[](https://opensource.org/licenses/LGPL-3.0)
## ⛏️ Contribuição
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.
[](https://github.com/HashLoad/ormbr/issues)
Para enviar uma pull request, siga estas etapas:
1. Faça um fork do projeto
2. Crie uma nova branch (`git checkout -b minha-nova-funcionalidade`)
3. Faça suas alterações e commit (`git commit -am 'Adicionando nova funcionalidade'`)
4. Faça push da branch (`git push origin minha-nova-funcionalidade`)
5. Abra uma pull request
## 📬 Contato
[](https://t.me/hashload)
## 💲 Doação
[](https://pag.ae/bglQrWD)