Ir para conteúdo
  • Cadastre-se

dev botao

Biblioteca JSON pro ACBr


  • Este tópico foi criado há 2218 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Pessoal, 

Inevitavelmente, cada vez mais JSON vem se tornando o protocolo de comunicação mais utilizados entre as aplicações.

Sabemos que existem bibliotecas de conversão nativas tanto para o Delphi quanto para o Lazarus. E tantas outras de terceiros, de código fechado e de código aberto.

Creio que cedo ou tarde, o projeto ACBr terá que fazer uso de alguma biblioteca JSON, então gostaria de propor aqui uma discussão pra validar/decidir o uso de JSON dentro do projeto ACBr. Poderia-se iniciar com algumas questões:

Criar uma biblioteca própria? Criada do zero, ou se basear em alguma já existente?

Usar uma existente e colocar dentro de /Terceiros/? Qual biblioteca existente utilizar?

Usar nativo? IFDEF pra Lazarus e Delphi/XE?

 

Estou levantando essa questão, pois estou criando um componente pra realizar a comunicação com o COSMOS da Bluesoft fazendo uso da TACBrHTTP, onde o retorno é JSON. Na qual, quem sabe após a definição de uma biblioteca JSON, esse componente poderá fazer parte do projeto ACBr... claro se o mesmo for aprovado.

 

Aguardo uma discussão :)

 

[]'s

 

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

  • Consultores

Olá Giquieu,

   Eu sugiro "De Terceiros". Já fazemos isso para comunicação serial (synapse) e geração de relatórios (Fortes).

   Nativo só é vantajoso se for compatível entre as várias versões do Delphi e o Lazarus.

   Manter uma biblioteca JSON no projeto ACBr seria excelente. Mas ela tem funcionalidade tão abrangente, que provavelmente teríamos mais apoio e menor probabilidade de erros se usássemos uma de terceiros. Ganharíamos em tempo e em estabilidade.

   Quanto a qual usar teria que pesquisar primeiro. Tem 3 aqui só pra começar. Teria que analisar a licença e se atende ao requisito de funcionar com o Lazarus e pelo menos nas primeiras versões do Delphi que aceita Unicode:

https://github.com/ahausladen/JsonDataObjects

https://www.delphitools.info/2012/09/17/spotlight-on-dwsjson/

https://sourceforge.net/projects/is-webstart/

https://sourceforge.net/projects/lkjson/

  • Curtir 2

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
Link para o comentário
Compartilhar em outros sites

Eu sugiro o de terceiro também, segue o que tenho conhecimento de uso.
Em relação a versão do Delphi não sei se irá conseguir utilizar/encontrar algum abaixo do Delphi 2010.

https://github.com/hgourvest/superobject - Para Delphi e Lazarus.

https://github.com/onryldz/x-superobject - Para Delphi xe2 acima (funciona com FireMonkey).

Abraço!

Editado por renato_oda
Link para o comentário
Compartilhar em outros sites

Realmente uma biblioteca de JSON é muito abrangente e demandaria um bom esforço inicial pra criar uma.

No meu ver, o melhor dos mundos seria usar as bibliotecas nativas, porém será necessário um bom trabalho pra criar uma Fachada que encapsule as bibliotecas do Delphi e do Lazarus. Pelo menos a maioria das classes entre Delphi/Lazarus tem o mesmo nome... (TJSONObject, TJSONString, TJSONNumber, etc).

Mas diante do que o Elton disse, sobre estabilidade, erros, no final fica melhor usar uma de Terceiro mesmo. xD

Já usei a LkJSON, tanto no Delphi quanto no Lazarus. Apesar do repositório dela esta parada, ela está estável. 

Achei interessante a:

https://github.com/hgourvest/superobject - Para Delphi e Lazarus.

 

Eu não intendo muito bem essa questão de licença... qual licença que a biblioteca deve estar registrada pra podermos usar e modificar se necessário?

Link para o comentário
Compartilhar em outros sites

Bom dia.

O Delphi, a partir da versão XE5 ( se não estiver enganado), disponibilizou uma unit (Rest.JSON), que faz todo o trabalho braçal para você com apenas uma única linha de código.

Objecto para JSON

SJson := TJson.ObjectToJsonString(FClienteItens)

Json para Classe (O método cria o objeto):

FClienteItens := TJson.JsonToObject<TClienteItens>(SJson);

Simples assim

Atenciosamente.

------------------------------------------------

Jéter Rabelo Ferreira
Campestre/MG

Link para o comentário
Compartilhar em outros sites

  • 2 semanas depois ...
  • Consultores
Em 06/07/2016 at 09:49, Giquieu disse:

Eu não intendo muito bem essa questão de licença... qual licença que a biblioteca deve estar registrada pra podermos usar e modificar se necessário?

Apache, MIT, MPL, talvez LGPL... Não pode ser GPL.

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
Link para o comentário
Compartilhar em outros sites

  • 1 ano depois...

@Daniel Simoes

Acabei de atualizar o ACBr e notei que vc commitou um biblioteca de Terceiro para trabalhar com JSON.

Revision: 14751
Author: dopi
Date: segunda-feira, 26 de fevereiro de 2018 18:51:58

 

Queria te mostrar a PasJSON desenvolvida pelo Benjamin (BeRo1985), totalmente compatível com Delphi/FPC.

https://github.com/BeRo1985/pasjson

Achei o Parser do PasJSON muito mais otimizado do que a Json4Delphi. Estou testando ela no Lazarus/FPC e não tive nenhum problema.

Poderia considerar um estudo, pra que ela se torne a Lib de JSON do projeto ACBr?

 

Link para o comentário
Compartilhar em outros sites

  • Fundadores

Obrigado pela indicação... vou analisar a possibilidade de mudança...

No momento apenas usamos a lib de Json em ACBrIBGE

  • Obrigado 1
Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Link para o comentário
Compartilhar em outros sites

  • Este tópico foi criado há 2218 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.