GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — GitHub - HashLoad/jsonbr: JSONBr Framework for Delphi (Isaque Pinheiro)

BranchesTags
Open more actions menu

Latest commit

 

History

64 Commits
64 Commits

Folders and files

NameName
Last commit message
Last commit date
Examples
Examples
 
 
Source
Source
 
 
Test Delphi
Test Delphi
 
 
Test Performance
Test Performance
 
 
.gitignore
.gitignore
 
 
README.md
README.md
 
 
boss-lock.json
boss-lock.json
 
 
boss.json
boss.json
 
 
readme.txt
readme.txt
 
 

Repository files navigation

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]

boss install "https://github.com/HashLoad/jsonbr"

⚡️ Como usar

procedure TTestJSONBr.Loop50000;
var
  LList: TObjectList<TRootDTO>;
  LObject: TRootDTO;
  LFor: Integer;
  LInit, LEnd: Cardinal;
begin
  LList := TObjectList<TRootDTO>.Create;
  LList.OwnsObjects := True;
  try
    LInit := GetTickCount;
    for LFor := 1 to SAMPLE_JSON_1_COUNT do
    begin
      LObject := TJSONBr.JsonToObject<TRootDTO>(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;
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;
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;
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":["[email protected]","[email protected]"]}}';
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', ['[email protected]', '[email protected]'])
                .EndObject
              .EndObject
            .ToJSON;
end;

✍️ License

License

⛏️ 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.

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

Telegram

💲 Doação

Doação

About

JSONBr Framework for Delphi (Isaque Pinheiro)

www.isaquepinheiro.com.br

Resources

Readme
Activity
Custom properties

Stars

13 stars

Watchers

6 watching

Forks

10 forks
Report repository

Releases

Packages

Contributors

Languages

You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.