SlideShare una empresa de Scribd logo
1 de 25
Nova Infraestrutura JSON:
System.JSON na prática
Mário Guedes
Mário?
• Arquiteto de Soluções RESTful na G4 Solutions
• Desenvolvedor Delphi, Python, JS e noSQL
• +15 anos na lida
• Filho de Valdete e Joselito
• Irmão do Manoel, da Jenny e do Jonhy
• Pai do Júlio e da Fernanda
• Noivo da Tamires
• mario.guedes@arrayof.com.br
Trabalhe conosco!
• http://www.g4solutions.com.br/trabalhe-conosco/
• rh@g4solutions.com.br
• Delphi,
• Python,
• JavaScript,
• .NET,
• noSQL,
• SQL Server,
• Telefonia,
• Cloud,
• Mobile,
• E um monte de coisa legal!
Vamos começar com um clichê? 
Material complementar
Este material tem tudo a ver com REST e é uma extensão das minhas últimas
contribuições:
• Conhecendo o Novo REST Framework
Embarcadero Conference 2014
http://pt.slideshare.net/jmarioguedes/conhecendo-o-novo-rest-framework
• Tudo sobre o REST Client Library
CodeRage Brasil III
https://www.youtube.com/watch?v=ajl2GEJonQA
Baby steps
Alguns conceitos da coisa toda
O que é o JSON?
• Representação de objetos JavaScript
• Formato em texto simples e auto descritivo
• Nasceu no âmbito do JS por ser A linguagem de front end web
• Porém é suportado por qualquer outra linguagem moderna
• Permite encadeamento de dados
• Criado por Douglas Crockford
• http://json.org/json-pt.html
Para que serve o JSON?
• Representar dados para troca entre sistemas heterogêneos
 Menos verboso que o XML
 Mais semântico que texto simples
 Mais portável que um formato binário
 Largamente usado em API REST
 Existem storages noSQL orientado à documento
• Por exigir menos caracteres em sua representação:
 Ajuda na vazão dos dados pelo lado servidor
 É processado mais rapidamente pelos softwares
• Conveniente para softwares e humanos
Tipos suportados pelo JSON
• String: Texto simples
• Números: Inteiros e reais
• Objeto: Tipo complexo
• Array: Lista não ordenada e não tipada
• true: Verdadeiro
• false: Falso
• null: Ausência de valor
Representando uma String
• Encerrado por aspas
• Caracteres de controle devem ser escapados
• Para quebra de linha não use #13, use n
“ ”Delphi 10nSeattle
Representando um número
• Cadeia de números
• Parte fracionária deve ser representada
por ponto
• Número negativo deve ser representado
por traço no início da cadeia
• Não devem ser encerrado por aspas
Verdadeiro, Falso e Nulo
• São representados pelos literais Java Script correspondentes
• Não devem ser encerrados por aspas
true false null
Representando um array
• O array, ou lista, é
caracterizado por colchetes.
• Os elementos de um array
pode ser de qualquer tipo.
• Os elementos são
separados por vírgula.
Objeto JSON
• Um Objeto JSON é um conjunto de pares de chave e valor encerrados por
chaves.
• A chave é representado por uma string, ficando à esquerda.
• A chave é separada do valor por dois pontos.
• O valor pode ser de qualquer outro tipo suportado pelo JSON.
• Cada par é separado por vírgula do outro par.
• Em prol da portabilidade evite caracteres especiais no nome da chave.
Banco noSQL orientado à
documento
Vamos falar um pouco sobre o mongoDB
O FireDAC passa a suportar o mongoDB
• Agora temos a paleta “FireDAC noSQL”, ou seja, ela tende a oferecer mais
oportunidades no futuro
• O mongoDB é o banco noSQL orientado à documento mais conceituado no
momento
• Apesar de visualizarmos JSON o mongoDB armazena no formato BSON
• Tudo isso nos trás oportunidades incríveis!
• Não ria do nome, mongo de humongous: gigantesco
• https://www.mongodb.org/
BSON?
• BSON é como se fosse o JSON no formato binário
Isso implica em menos bytes para representar as informações
E maior velocidade de análise (parsing)
Porém afeta a legibilidade e interoperabilidade
• O Delphi, por conta do suporte ao mongoDB, oferece classes para trabalhar
com BSON
• É uma ótima opção para intercâmbio de dados entre programas Delphi
(cliente e servidor)
Assista à palestra do Alan Glei
• O paradigma noSQL esta ai e não deve ser ignorado.
• Temos 4 orientações:
À chave e valor: REDIS
À colunas: Cassandra
À grafo: Neo4J
À documento: mongoDB
• Permita-se conhecer o noSQL!
Será que você precisa realmente de um banco SQL?
Será que parte do seu sistema não teria mais fluidez com noSQL?
Aplicando tudo isto no Delphi
System.JSON na prática
uses System.JSON.*
Namespace especializado para o tratamento de JSON, que foi ampliado, dando suporte
ao “JSON extendido” (mongoDB) bem como implementa features do JSON.NET
• System.JSON: Contêm várias classes, em especial as que representam o tipos JSON
Substitui a unit Data.JSON
• System.JSON.Readers: Leitores de estruturas JSON
• System.JSON.Writers: Escritores de estruturas JSON
• System.JSON.Builders: Construtores JSON
• System.JSON.BSON: Dá suporte ao formato BSON
• System.JSON.Utils: Possui a classe TJsonTextUtils que auxilia na formatação
• System.JSON.Types: Tipos auxiliares diversos
• System.JSONConsts: Resources Strings diversas
• Também temos a REST.JSON com algumas facilidades bacanas.
Diagrama simplificado – System.JSON
TJSONAncestor
TJSONPair TJSONValue
TJSONTrue TJSONFalse TJSONString TJSONNullTJSONObjectTJSONArray
TJSONNumber
Exemplos práticos
Vamos ver um pouco disso tudo funcionando!
Baixe os exemplos depois se quiser,
• https://github.com/jmarioguedes/EC2015_JSON.git
Referências interessantes
• Introdução ao JSON - Um guia para JSON que vai direto ao ponto
Lindsay Bassett
Editora Novatec - http://www.novatec.com.br/livros/introjson/
• JSON. De gambiarra a padrão
Caio Gondim
http://loopinfinito.com.br/2013/06/18/json-de-gambiarra-a-padrao/
• Sobre o JSON: http://json.org/json-pt.html
• Sobre o BSON: http://bsonspec.org
• MongoDB - Guia Rápido:
https://mongodbwise.wordpress.com/2014/05/22/mongodb-guia-rapido/
http://fb.com/DelphiBrasil
http://fb.com/EmbarcaderoBR
http://www.embarcadero.com/mvp-directory
http://www.embarcaderobr.com.br/treinamentos/
{
“nome” : “Mário Guedes” ,
“e-mail” : “mario.guedes@arrayof.com.br” ,
“blog” : “http://eugostododelphi.blogspot.com.br” ,
“perfis” : [
{“linkedin” : “jmarioguedes”} ,
{“slideshare” : “jmarioguedes”} ,
{“github” : “jmarioguedes”} ,
{“prezi” : “jmarioguedes”}
]
}

Más contenido relacionado

La actualidad más candente

Migrando 4 milhões de linhas de Delphi 7 para XE7
Migrando 4 milhões de linhas de Delphi 7 para XE7Migrando 4 milhões de linhas de Delphi 7 para XE7
Migrando 4 milhões de linhas de Delphi 7 para XE7José Araújo
 
FireDAC - Embarcadero Conference 2015
FireDAC - Embarcadero Conference 2015FireDAC - Embarcadero Conference 2015
FireDAC - Embarcadero Conference 2015Guinther Pauli
 
Introdução FireDAC Acesso multi-banco para Delphi e C++ Builder
Introdução FireDACAcesso multi-banco para Delphi e C++ BuilderIntrodução FireDACAcesso multi-banco para Delphi e C++ Builder
Introdução FireDAC Acesso multi-banco para Delphi e C++ BuilderDiego Rosa
 
REST Web Services com Java
REST Web Services com JavaREST Web Services com Java
REST Web Services com JavaJugVale
 
Migrando aplicações para FireDac - Embarcadero Conference 2014
Migrando aplicações para FireDac - Embarcadero Conference 2014Migrando aplicações para FireDac - Embarcadero Conference 2014
Migrando aplicações para FireDac - Embarcadero Conference 2014Diego Rosa
 
Curso de PHP Básico ao Avançado
Curso de PHP Básico ao AvançadoCurso de PHP Básico ao Avançado
Curso de PHP Básico ao AvançadoLuiz Junior
 
PHP: Linguagem + Mysql + MVC + AJAX
PHP: Linguagem + Mysql + MVC + AJAX PHP: Linguagem + Mysql + MVC + AJAX
PHP: Linguagem + Mysql + MVC + AJAX Sérgio Souza Costa
 
Curso de php do básico ao avançado
Curso de php do básico ao avançadoCurso de php do básico ao avançado
Curso de php do básico ao avançadoThiago Carlos
 
Aula 02 - Introdução ao PHP
Aula 02 - Introdução ao PHPAula 02 - Introdução ao PHP
Aula 02 - Introdução ao PHPDaniel Brandão
 
FireDAC: do básico ao avançado - Embarcadero Conference 2014
FireDAC: do básico ao avançado - Embarcadero Conference 2014FireDAC: do básico ao avançado - Embarcadero Conference 2014
FireDAC: do básico ao avançado - Embarcadero Conference 2014Alan Glei
 
Code Rage Brazil III - Tudo sobre o REST Client Library
Code Rage Brazil III - Tudo sobre o REST Client LibraryCode Rage Brazil III - Tudo sobre o REST Client Library
Code Rage Brazil III - Tudo sobre o REST Client LibraryMario Guedes
 
FireDAC para BigDATA: Teradata e MongoDB
FireDAC para BigDATA: Teradata e MongoDBFireDAC para BigDATA: Teradata e MongoDB
FireDAC para BigDATA: Teradata e MongoDBAlan Glei
 
Comandos gerais do PHP
Comandos gerais do PHPComandos gerais do PHP
Comandos gerais do PHPPaulo Dayvson
 
Aula03 PHP - Estruturas Condicionais
Aula03 PHP - Estruturas CondicionaisAula03 PHP - Estruturas Condicionais
Aula03 PHP - Estruturas CondicionaisDaniel Brandão
 
Conceitos básicos PHP
Conceitos básicos PHPConceitos básicos PHP
Conceitos básicos PHPHelton Ritter
 
Doctrine 2 camada de persistência para php
Doctrine 2   camada de persistência para phpDoctrine 2   camada de persistência para php
Doctrine 2 camada de persistência para phpFabio B. Silva
 
Desenvolvimento Agil Com Doctrine Orm
Desenvolvimento Agil Com Doctrine OrmDesenvolvimento Agil Com Doctrine Orm
Desenvolvimento Agil Com Doctrine OrmGuilherme Blanco
 

La actualidad más candente (20)

Migrando 4 milhões de linhas de Delphi 7 para XE7
Migrando 4 milhões de linhas de Delphi 7 para XE7Migrando 4 milhões de linhas de Delphi 7 para XE7
Migrando 4 milhões de linhas de Delphi 7 para XE7
 
FireDAC - Embarcadero Conference 2015
FireDAC - Embarcadero Conference 2015FireDAC - Embarcadero Conference 2015
FireDAC - Embarcadero Conference 2015
 
Introdução FireDAC Acesso multi-banco para Delphi e C++ Builder
Introdução FireDACAcesso multi-banco para Delphi e C++ BuilderIntrodução FireDACAcesso multi-banco para Delphi e C++ Builder
Introdução FireDAC Acesso multi-banco para Delphi e C++ Builder
 
REST Web Services com Java
REST Web Services com JavaREST Web Services com Java
REST Web Services com Java
 
Migrando aplicações para FireDac - Embarcadero Conference 2014
Migrando aplicações para FireDac - Embarcadero Conference 2014Migrando aplicações para FireDac - Embarcadero Conference 2014
Migrando aplicações para FireDac - Embarcadero Conference 2014
 
Curso de PHP Básico ao Avançado
Curso de PHP Básico ao AvançadoCurso de PHP Básico ao Avançado
Curso de PHP Básico ao Avançado
 
PHP: Linguagem + Mysql + MVC + AJAX
PHP: Linguagem + Mysql + MVC + AJAX PHP: Linguagem + Mysql + MVC + AJAX
PHP: Linguagem + Mysql + MVC + AJAX
 
Curso de php do básico ao avançado
Curso de php do básico ao avançadoCurso de php do básico ao avançado
Curso de php do básico ao avançado
 
Aula 02 - Introdução ao PHP
Aula 02 - Introdução ao PHPAula 02 - Introdução ao PHP
Aula 02 - Introdução ao PHP
 
FireDAC: do básico ao avançado - Embarcadero Conference 2014
FireDAC: do básico ao avançado - Embarcadero Conference 2014FireDAC: do básico ao avançado - Embarcadero Conference 2014
FireDAC: do básico ao avançado - Embarcadero Conference 2014
 
Code Rage Brazil III - Tudo sobre o REST Client Library
Code Rage Brazil III - Tudo sobre o REST Client LibraryCode Rage Brazil III - Tudo sobre o REST Client Library
Code Rage Brazil III - Tudo sobre o REST Client Library
 
FireDAC para BigDATA: Teradata e MongoDB
FireDAC para BigDATA: Teradata e MongoDBFireDAC para BigDATA: Teradata e MongoDB
FireDAC para BigDATA: Teradata e MongoDB
 
Comandos gerais do PHP
Comandos gerais do PHPComandos gerais do PHP
Comandos gerais do PHP
 
Linguagem PHP
Linguagem PHPLinguagem PHP
Linguagem PHP
 
Principais Tecnologias WEB
Principais Tecnologias WEBPrincipais Tecnologias WEB
Principais Tecnologias WEB
 
Aula03 PHP - Estruturas Condicionais
Aula03 PHP - Estruturas CondicionaisAula03 PHP - Estruturas Condicionais
Aula03 PHP - Estruturas Condicionais
 
Conceitos básicos PHP
Conceitos básicos PHPConceitos básicos PHP
Conceitos básicos PHP
 
Doctrine 2 camada de persistência para php
Doctrine 2   camada de persistência para phpDoctrine 2   camada de persistência para php
Doctrine 2 camada de persistência para php
 
PHP - Introdução
PHP - IntroduçãoPHP - Introdução
PHP - Introdução
 
Desenvolvimento Agil Com Doctrine Orm
Desenvolvimento Agil Com Doctrine OrmDesenvolvimento Agil Com Doctrine Orm
Desenvolvimento Agil Com Doctrine Orm
 

Destacado

Datasnap avançado - Respostas para um sistema robusto - Embarcadero Conferenc...
Datasnap avançado - Respostas para um sistema robusto - Embarcadero Conferenc...Datasnap avançado - Respostas para um sistema robusto - Embarcadero Conferenc...
Datasnap avançado - Respostas para um sistema robusto - Embarcadero Conferenc...Kelver Merlotti
 
Datasnap com FireDAC - Embarcadero Conference 2015
Datasnap com FireDAC - Embarcadero Conference 2015Datasnap com FireDAC - Embarcadero Conference 2015
Datasnap com FireDAC - Embarcadero Conference 2015Kelver Merlotti
 
Testando aplicações DataSnap
Testando aplicações DataSnapTestando aplicações DataSnap
Testando aplicações DataSnapAndreano Lanusse
 
Dados e Serviços Remotos via DataSnap
Dados e Serviços Remotos via DataSnapDados e Serviços Remotos via DataSnap
Dados e Serviços Remotos via DataSnapLanderson Gomes
 
MongoDB: um banco de dados orientado a documento
MongoDB: um banco de dados orientado a documentoMongoDB: um banco de dados orientado a documento
MongoDB: um banco de dados orientado a documentoJulio Monteiro
 
Rad Studio 10 com Android e Unidac
Rad Studio 10 com Android e UnidacRad Studio 10 com Android e Unidac
Rad Studio 10 com Android e UnidacLanderson Gomes
 
Bate papo sobre desenvolvimento de spftware
Bate papo sobre desenvolvimento de spftwareBate papo sobre desenvolvimento de spftware
Bate papo sobre desenvolvimento de spftwareAdriano Santos
 
ListBox e Listview em Apps Mobile - Embarcadero Conference 2013
ListBox e Listview em Apps Mobile - Embarcadero Conference 2013ListBox e Listview em Apps Mobile - Embarcadero Conference 2013
ListBox e Listview em Apps Mobile - Embarcadero Conference 2013Vic Fernandes
 
Hora GTI - Top 10 Tendências Mobile para 2015 e 2016
Hora GTI - Top 10 Tendências Mobile para 2015 e 2016Hora GTI - Top 10 Tendências Mobile para 2015 e 2016
Hora GTI - Top 10 Tendências Mobile para 2015 e 2016Cássio Nandi Citadin
 
Universidad tecnologica de panama
Universidad tecnologica de panamaUniversidad tecnologica de panama
Universidad tecnologica de panamaruth montenegro
 
Presentacion dhtic
Presentacion dhticPresentacion dhtic
Presentacion dhticIsrael Magno
 
Team Foundation Server
Team Foundation ServerTeam Foundation Server
Team Foundation Server國昭 張
 

Destacado (15)

Datasnap avançado - Respostas para um sistema robusto - Embarcadero Conferenc...
Datasnap avançado - Respostas para um sistema robusto - Embarcadero Conferenc...Datasnap avançado - Respostas para um sistema robusto - Embarcadero Conferenc...
Datasnap avançado - Respostas para um sistema robusto - Embarcadero Conferenc...
 
Datasnap com FireDAC - Embarcadero Conference 2015
Datasnap com FireDAC - Embarcadero Conference 2015Datasnap com FireDAC - Embarcadero Conference 2015
Datasnap com FireDAC - Embarcadero Conference 2015
 
Testando aplicações DataSnap
Testando aplicações DataSnapTestando aplicações DataSnap
Testando aplicações DataSnap
 
Dados e Serviços Remotos via DataSnap
Dados e Serviços Remotos via DataSnapDados e Serviços Remotos via DataSnap
Dados e Serviços Remotos via DataSnap
 
RESTful com json
RESTful com jsonRESTful com json
RESTful com json
 
MongoDB: um banco de dados orientado a documento
MongoDB: um banco de dados orientado a documentoMongoDB: um banco de dados orientado a documento
MongoDB: um banco de dados orientado a documento
 
Rad Studio 10 com Android e Unidac
Rad Studio 10 com Android e UnidacRad Studio 10 com Android e Unidac
Rad Studio 10 com Android e Unidac
 
Bate papo sobre desenvolvimento de spftware
Bate papo sobre desenvolvimento de spftwareBate papo sobre desenvolvimento de spftware
Bate papo sobre desenvolvimento de spftware
 
ListBox e Listview em Apps Mobile - Embarcadero Conference 2013
ListBox e Listview em Apps Mobile - Embarcadero Conference 2013ListBox e Listview em Apps Mobile - Embarcadero Conference 2013
ListBox e Listview em Apps Mobile - Embarcadero Conference 2013
 
Hora GTI - Top 10 Tendências Mobile para 2015 e 2016
Hora GTI - Top 10 Tendências Mobile para 2015 e 2016Hora GTI - Top 10 Tendências Mobile para 2015 e 2016
Hora GTI - Top 10 Tendências Mobile para 2015 e 2016
 
Minicurso de Expressões Regulares
Minicurso de Expressões RegularesMinicurso de Expressões Regulares
Minicurso de Expressões Regulares
 
Exploring FireDAC
Exploring FireDACExploring FireDAC
Exploring FireDAC
 
Universidad tecnologica de panama
Universidad tecnologica de panamaUniversidad tecnologica de panama
Universidad tecnologica de panama
 
Presentacion dhtic
Presentacion dhticPresentacion dhtic
Presentacion dhtic
 
Team Foundation Server
Team Foundation ServerTeam Foundation Server
Team Foundation Server
 

Similar a Infraestrutura JSON com System.JSON

Utilizando NoSQL no desenvolvimento de soluções inteligentes
Utilizando NoSQL no desenvolvimento de soluções inteligentesUtilizando NoSQL no desenvolvimento de soluções inteligentes
Utilizando NoSQL no desenvolvimento de soluções inteligentesChristiano Anderson
 
Minicurso de Rails - WTISC 2014
Minicurso de Rails - WTISC 2014Minicurso de Rails - WTISC 2014
Minicurso de Rails - WTISC 2014Zarathon Maia
 
Workshop ExtJS4
Workshop ExtJS4Workshop ExtJS4
Workshop ExtJS4javamanrj
 
Desvendando a linguagem JavaScript
Desvendando a linguagem JavaScriptDesvendando a linguagem JavaScript
Desvendando a linguagem JavaScriptRodrigo Branas
 
Desenvolvimento ágil de software com Ruby on Rails
Desenvolvimento ágil de software com Ruby on RailsDesenvolvimento ágil de software com Ruby on Rails
Desenvolvimento ágil de software com Ruby on RailsLucas Caton
 
Fazendo barba, cabelo e bigode com REDIS
Fazendo barba, cabelo e bigode com REDISFazendo barba, cabelo e bigode com REDIS
Fazendo barba, cabelo e bigode com REDISMario Guedes
 
Fazendo barba, cabelo e bigode com REDIS
Fazendo barba, cabelo e bigode com REDISFazendo barba, cabelo e bigode com REDIS
Fazendo barba, cabelo e bigode com REDISArrayOf.io
 
SQL Server Heterogêneo: SQL Server + BigData
SQL Server Heterogêneo: SQL Server + BigDataSQL Server Heterogêneo: SQL Server + BigData
SQL Server Heterogêneo: SQL Server + BigDataRodrigo Dornel
 
Mongodb praquer-usar-uaijugcloudday2014
Mongodb praquer-usar-uaijugcloudday2014Mongodb praquer-usar-uaijugcloudday2014
Mongodb praquer-usar-uaijugcloudday2014Rogerio Fontes
 
Três anos de Scala no NewsMonitor
Três anos de Scala no NewsMonitorTrês anos de Scala no NewsMonitor
Três anos de Scala no NewsMonitorFelipe Hummel
 
Porque aprender várias linguagens me tornou um DBA (e desenvolvedor) melhor
Porque aprender várias linguagens me tornou um DBA (e desenvolvedor) melhorPorque aprender várias linguagens me tornou um DBA (e desenvolvedor) melhor
Porque aprender várias linguagens me tornou um DBA (e desenvolvedor) melhorDickson S. Guedes
 
Ruby, Rails e Diversão (Campus Party Brasil 2009)
Ruby, Rails e Diversão (Campus Party Brasil 2009)Ruby, Rails e Diversão (Campus Party Brasil 2009)
Ruby, Rails e Diversão (Campus Party Brasil 2009)Julio Monteiro
 
AspNet 5 & Redis - Escalando sua performance
AspNet 5 & Redis - Escalando sua performanceAspNet 5 & Redis - Escalando sua performance
AspNet 5 & Redis - Escalando sua performanceJosé Roberto Araújo
 
Desenvolvimento web com Ruby on Rails (parte 1)
Desenvolvimento web com Ruby on Rails (parte 1)Desenvolvimento web com Ruby on Rails (parte 1)
Desenvolvimento web com Ruby on Rails (parte 1)Joao Lucas Santana
 
1 ooi introducao
1 ooi introducao1 ooi introducao
1 ooi introducaonikson123
 
#DNAD15 - Diminuindo sofrimento com código legado de linguagens não mainstreams
#DNAD15  - Diminuindo sofrimento com código legado de linguagens não mainstreams#DNAD15  - Diminuindo sofrimento com código legado de linguagens não mainstreams
#DNAD15 - Diminuindo sofrimento com código legado de linguagens não mainstreamsJacqueline Abreu
 
Curso Java Básico - Aula 01
Curso Java Básico - Aula 01Curso Java Básico - Aula 01
Curso Java Básico - Aula 01Natanael Fonseca
 

Similar a Infraestrutura JSON com System.JSON (20)

Utilizando NoSQL no desenvolvimento de soluções inteligentes
Utilizando NoSQL no desenvolvimento de soluções inteligentesUtilizando NoSQL no desenvolvimento de soluções inteligentes
Utilizando NoSQL no desenvolvimento de soluções inteligentes
 
Minicurso de Rails - WTISC 2014
Minicurso de Rails - WTISC 2014Minicurso de Rails - WTISC 2014
Minicurso de Rails - WTISC 2014
 
Workshop ExtJS4
Workshop ExtJS4Workshop ExtJS4
Workshop ExtJS4
 
Desvendando a linguagem JavaScript
Desvendando a linguagem JavaScriptDesvendando a linguagem JavaScript
Desvendando a linguagem JavaScript
 
Desenvolvimento ágil de software com Ruby on Rails
Desenvolvimento ágil de software com Ruby on RailsDesenvolvimento ágil de software com Ruby on Rails
Desenvolvimento ágil de software com Ruby on Rails
 
Fazendo barba, cabelo e bigode com REDIS
Fazendo barba, cabelo e bigode com REDISFazendo barba, cabelo e bigode com REDIS
Fazendo barba, cabelo e bigode com REDIS
 
Fazendo barba, cabelo e bigode com REDIS
Fazendo barba, cabelo e bigode com REDISFazendo barba, cabelo e bigode com REDIS
Fazendo barba, cabelo e bigode com REDIS
 
SQL Server Heterogêneo: SQL Server + BigData
SQL Server Heterogêneo: SQL Server + BigDataSQL Server Heterogêneo: SQL Server + BigData
SQL Server Heterogêneo: SQL Server + BigData
 
Palestra nosql
Palestra nosqlPalestra nosql
Palestra nosql
 
Mongodb praquer-usar-uaijugcloudday2014
Mongodb praquer-usar-uaijugcloudday2014Mongodb praquer-usar-uaijugcloudday2014
Mongodb praquer-usar-uaijugcloudday2014
 
Três anos de Scala no NewsMonitor
Três anos de Scala no NewsMonitorTrês anos de Scala no NewsMonitor
Três anos de Scala no NewsMonitor
 
Porque aprender várias linguagens me tornou um DBA (e desenvolvedor) melhor
Porque aprender várias linguagens me tornou um DBA (e desenvolvedor) melhorPorque aprender várias linguagens me tornou um DBA (e desenvolvedor) melhor
Porque aprender várias linguagens me tornou um DBA (e desenvolvedor) melhor
 
Ruby, Rails e Diversão (Campus Party Brasil 2009)
Ruby, Rails e Diversão (Campus Party Brasil 2009)Ruby, Rails e Diversão (Campus Party Brasil 2009)
Ruby, Rails e Diversão (Campus Party Brasil 2009)
 
AspNet 5 & Redis - Escalando sua performance
AspNet 5 & Redis - Escalando sua performanceAspNet 5 & Redis - Escalando sua performance
AspNet 5 & Redis - Escalando sua performance
 
NoSql e NewSql
NoSql e NewSqlNoSql e NewSql
NoSql e NewSql
 
Desenvolvimento web com Ruby on Rails (parte 1)
Desenvolvimento web com Ruby on Rails (parte 1)Desenvolvimento web com Ruby on Rails (parte 1)
Desenvolvimento web com Ruby on Rails (parte 1)
 
1 ooi introducao
1 ooi introducao1 ooi introducao
1 ooi introducao
 
#DNAD15 - Diminuindo sofrimento com código legado de linguagens não mainstreams
#DNAD15  - Diminuindo sofrimento com código legado de linguagens não mainstreams#DNAD15  - Diminuindo sofrimento com código legado de linguagens não mainstreams
#DNAD15 - Diminuindo sofrimento com código legado de linguagens não mainstreams
 
Curso Java Básico - Aula 01
Curso Java Básico - Aula 01Curso Java Básico - Aula 01
Curso Java Básico - Aula 01
 
Ruby & Rails
Ruby & RailsRuby & Rails
Ruby & Rails
 

Más de Mario Guedes

O que é e como devo usar o REDIS? - 1o Mobile REST Summit
O que é e como devo usar o REDIS? - 1o Mobile REST SummitO que é e como devo usar o REDIS? - 1o Mobile REST Summit
O que é e como devo usar o REDIS? - 1o Mobile REST SummitMario Guedes
 
Integrando-se à Blockchain da Ethereum
Integrando-se à Blockchain da EthereumIntegrando-se à Blockchain da Ethereum
Integrando-se à Blockchain da EthereumMario Guedes
 
Entendendo HTTP para entender o REST
Entendendo HTTP para entender o RESTEntendendo HTTP para entender o REST
Entendendo HTTP para entender o RESTMario Guedes
 
Expressão Regular - Cookbook
Expressão Regular - CookbookExpressão Regular - Cookbook
Expressão Regular - CookbookMario Guedes
 
Geolocalização com Redis e Google Maps
Geolocalização com Redis e Google MapsGeolocalização com Redis e Google Maps
Geolocalização com Redis e Google MapsMario Guedes
 
Foco no app, viva o serverless!
Foco no app, viva o serverless!Foco no app, viva o serverless!
Foco no app, viva o serverless!Mario Guedes
 
Geolocalização com Redis e Google Maps
Geolocalização com Redis e Google MapsGeolocalização com Redis e Google Maps
Geolocalização com Redis e Google MapsMario Guedes
 
Paralelismo na prática: Threads de uma vez por todas e sem medo!
Paralelismo na prática: Threads de uma vez por todas e sem medo!Paralelismo na prática: Threads de uma vez por todas e sem medo!
Paralelismo na prática: Threads de uma vez por todas e sem medo!Mario Guedes
 
Escalabilidade com Redis
Escalabilidade com Redis Escalabilidade com Redis
Escalabilidade com Redis Mario Guedes
 
Escalando o backend com NGINX e Redis
Escalando o backend com NGINX e RedisEscalando o backend com NGINX e Redis
Escalando o backend com NGINX e RedisMario Guedes
 
Turbinando o seu sistema com Redis!
Turbinando o seu sistema com Redis!Turbinando o seu sistema com Redis!
Turbinando o seu sistema com Redis!Mario Guedes
 
Microsserviço, Escalabilidade e Resiliência - #comofas?
Microsserviço, Escalabilidade e Resiliência - #comofas?Microsserviço, Escalabilidade e Resiliência - #comofas?
Microsserviço, Escalabilidade e Resiliência - #comofas?Mario Guedes
 
TDCSP - 2018 - Possibilidades com o REDIS no Delphi
TDCSP - 2018 - Possibilidades com o REDIS no DelphiTDCSP - 2018 - Possibilidades com o REDIS no Delphi
TDCSP - 2018 - Possibilidades com o REDIS no DelphiMario Guedes
 
Extreme Experience 2018 | Estudo de Caso: Aplicação DataSnap para 10.000 usuá...
Extreme Experience 2018 | Estudo de Caso: Aplicação DataSnap para 10.000 usuá...Extreme Experience 2018 | Estudo de Caso: Aplicação DataSnap para 10.000 usuá...
Extreme Experience 2018 | Estudo de Caso: Aplicação DataSnap para 10.000 usuá...Mario Guedes
 
Extreme Experience 2018 | Python para quem sabe Delphi
Extreme Experience 2018 | Python para quem sabe DelphiExtreme Experience 2018 | Python para quem sabe Delphi
Extreme Experience 2018 | Python para quem sabe DelphiMario Guedes
 
Intensive Delphi 2017 - E este tal de Redis hein?
Intensive Delphi 2017 - E este tal de Redis hein?Intensive Delphi 2017 - E este tal de Redis hein?
Intensive Delphi 2017 - E este tal de Redis hein?Mario Guedes
 
BOT: Conversando com o seu sistema
BOT: Conversando com o seu sistemaBOT: Conversando com o seu sistema
BOT: Conversando com o seu sistemaMario Guedes
 
Uma perspectiva histórica e o cenário atual das ferramentas de desenvolviment...
Uma perspectiva histórica e o cenário atual das ferramentas de desenvolviment...Uma perspectiva histórica e o cenário atual das ferramentas de desenvolviment...
Uma perspectiva histórica e o cenário atual das ferramentas de desenvolviment...Mario Guedes
 
Extreme 360º 2017 | Arquitetura Extrema: Rumo aos 10.000 usuários
Extreme 360º 2017 | Arquitetura Extrema: Rumo aos 10.000 usuáriosExtreme 360º 2017 | Arquitetura Extrema: Rumo aos 10.000 usuários
Extreme 360º 2017 | Arquitetura Extrema: Rumo aos 10.000 usuáriosMario Guedes
 
Arquitetura escalável e resiliente com NGINX, DataSnap, REDIS e MongoDB
Arquitetura escalável e resiliente com NGINX, DataSnap, REDIS e MongoDBArquitetura escalável e resiliente com NGINX, DataSnap, REDIS e MongoDB
Arquitetura escalável e resiliente com NGINX, DataSnap, REDIS e MongoDBMario Guedes
 

Más de Mario Guedes (20)

O que é e como devo usar o REDIS? - 1o Mobile REST Summit
O que é e como devo usar o REDIS? - 1o Mobile REST SummitO que é e como devo usar o REDIS? - 1o Mobile REST Summit
O que é e como devo usar o REDIS? - 1o Mobile REST Summit
 
Integrando-se à Blockchain da Ethereum
Integrando-se à Blockchain da EthereumIntegrando-se à Blockchain da Ethereum
Integrando-se à Blockchain da Ethereum
 
Entendendo HTTP para entender o REST
Entendendo HTTP para entender o RESTEntendendo HTTP para entender o REST
Entendendo HTTP para entender o REST
 
Expressão Regular - Cookbook
Expressão Regular - CookbookExpressão Regular - Cookbook
Expressão Regular - Cookbook
 
Geolocalização com Redis e Google Maps
Geolocalização com Redis e Google MapsGeolocalização com Redis e Google Maps
Geolocalização com Redis e Google Maps
 
Foco no app, viva o serverless!
Foco no app, viva o serverless!Foco no app, viva o serverless!
Foco no app, viva o serverless!
 
Geolocalização com Redis e Google Maps
Geolocalização com Redis e Google MapsGeolocalização com Redis e Google Maps
Geolocalização com Redis e Google Maps
 
Paralelismo na prática: Threads de uma vez por todas e sem medo!
Paralelismo na prática: Threads de uma vez por todas e sem medo!Paralelismo na prática: Threads de uma vez por todas e sem medo!
Paralelismo na prática: Threads de uma vez por todas e sem medo!
 
Escalabilidade com Redis
Escalabilidade com Redis Escalabilidade com Redis
Escalabilidade com Redis
 
Escalando o backend com NGINX e Redis
Escalando o backend com NGINX e RedisEscalando o backend com NGINX e Redis
Escalando o backend com NGINX e Redis
 
Turbinando o seu sistema com Redis!
Turbinando o seu sistema com Redis!Turbinando o seu sistema com Redis!
Turbinando o seu sistema com Redis!
 
Microsserviço, Escalabilidade e Resiliência - #comofas?
Microsserviço, Escalabilidade e Resiliência - #comofas?Microsserviço, Escalabilidade e Resiliência - #comofas?
Microsserviço, Escalabilidade e Resiliência - #comofas?
 
TDCSP - 2018 - Possibilidades com o REDIS no Delphi
TDCSP - 2018 - Possibilidades com o REDIS no DelphiTDCSP - 2018 - Possibilidades com o REDIS no Delphi
TDCSP - 2018 - Possibilidades com o REDIS no Delphi
 
Extreme Experience 2018 | Estudo de Caso: Aplicação DataSnap para 10.000 usuá...
Extreme Experience 2018 | Estudo de Caso: Aplicação DataSnap para 10.000 usuá...Extreme Experience 2018 | Estudo de Caso: Aplicação DataSnap para 10.000 usuá...
Extreme Experience 2018 | Estudo de Caso: Aplicação DataSnap para 10.000 usuá...
 
Extreme Experience 2018 | Python para quem sabe Delphi
Extreme Experience 2018 | Python para quem sabe DelphiExtreme Experience 2018 | Python para quem sabe Delphi
Extreme Experience 2018 | Python para quem sabe Delphi
 
Intensive Delphi 2017 - E este tal de Redis hein?
Intensive Delphi 2017 - E este tal de Redis hein?Intensive Delphi 2017 - E este tal de Redis hein?
Intensive Delphi 2017 - E este tal de Redis hein?
 
BOT: Conversando com o seu sistema
BOT: Conversando com o seu sistemaBOT: Conversando com o seu sistema
BOT: Conversando com o seu sistema
 
Uma perspectiva histórica e o cenário atual das ferramentas de desenvolviment...
Uma perspectiva histórica e o cenário atual das ferramentas de desenvolviment...Uma perspectiva histórica e o cenário atual das ferramentas de desenvolviment...
Uma perspectiva histórica e o cenário atual das ferramentas de desenvolviment...
 
Extreme 360º 2017 | Arquitetura Extrema: Rumo aos 10.000 usuários
Extreme 360º 2017 | Arquitetura Extrema: Rumo aos 10.000 usuáriosExtreme 360º 2017 | Arquitetura Extrema: Rumo aos 10.000 usuários
Extreme 360º 2017 | Arquitetura Extrema: Rumo aos 10.000 usuários
 
Arquitetura escalável e resiliente com NGINX, DataSnap, REDIS e MongoDB
Arquitetura escalável e resiliente com NGINX, DataSnap, REDIS e MongoDBArquitetura escalável e resiliente com NGINX, DataSnap, REDIS e MongoDB
Arquitetura escalável e resiliente com NGINX, DataSnap, REDIS e MongoDB
 

Infraestrutura JSON com System.JSON

  • 1. Nova Infraestrutura JSON: System.JSON na prática Mário Guedes
  • 2. Mário? • Arquiteto de Soluções RESTful na G4 Solutions • Desenvolvedor Delphi, Python, JS e noSQL • +15 anos na lida • Filho de Valdete e Joselito • Irmão do Manoel, da Jenny e do Jonhy • Pai do Júlio e da Fernanda • Noivo da Tamires • mario.guedes@arrayof.com.br
  • 3. Trabalhe conosco! • http://www.g4solutions.com.br/trabalhe-conosco/ • rh@g4solutions.com.br • Delphi, • Python, • JavaScript, • .NET, • noSQL, • SQL Server, • Telefonia, • Cloud, • Mobile, • E um monte de coisa legal!
  • 4. Vamos começar com um clichê? 
  • 5. Material complementar Este material tem tudo a ver com REST e é uma extensão das minhas últimas contribuições: • Conhecendo o Novo REST Framework Embarcadero Conference 2014 http://pt.slideshare.net/jmarioguedes/conhecendo-o-novo-rest-framework • Tudo sobre o REST Client Library CodeRage Brasil III https://www.youtube.com/watch?v=ajl2GEJonQA
  • 7. O que é o JSON? • Representação de objetos JavaScript • Formato em texto simples e auto descritivo • Nasceu no âmbito do JS por ser A linguagem de front end web • Porém é suportado por qualquer outra linguagem moderna • Permite encadeamento de dados • Criado por Douglas Crockford • http://json.org/json-pt.html
  • 8. Para que serve o JSON? • Representar dados para troca entre sistemas heterogêneos  Menos verboso que o XML  Mais semântico que texto simples  Mais portável que um formato binário  Largamente usado em API REST  Existem storages noSQL orientado à documento • Por exigir menos caracteres em sua representação:  Ajuda na vazão dos dados pelo lado servidor  É processado mais rapidamente pelos softwares • Conveniente para softwares e humanos
  • 9. Tipos suportados pelo JSON • String: Texto simples • Números: Inteiros e reais • Objeto: Tipo complexo • Array: Lista não ordenada e não tipada • true: Verdadeiro • false: Falso • null: Ausência de valor
  • 10. Representando uma String • Encerrado por aspas • Caracteres de controle devem ser escapados • Para quebra de linha não use #13, use n “ ”Delphi 10nSeattle
  • 11. Representando um número • Cadeia de números • Parte fracionária deve ser representada por ponto • Número negativo deve ser representado por traço no início da cadeia • Não devem ser encerrado por aspas
  • 12. Verdadeiro, Falso e Nulo • São representados pelos literais Java Script correspondentes • Não devem ser encerrados por aspas true false null
  • 13. Representando um array • O array, ou lista, é caracterizado por colchetes. • Os elementos de um array pode ser de qualquer tipo. • Os elementos são separados por vírgula.
  • 14. Objeto JSON • Um Objeto JSON é um conjunto de pares de chave e valor encerrados por chaves. • A chave é representado por uma string, ficando à esquerda. • A chave é separada do valor por dois pontos. • O valor pode ser de qualquer outro tipo suportado pelo JSON. • Cada par é separado por vírgula do outro par. • Em prol da portabilidade evite caracteres especiais no nome da chave.
  • 15. Banco noSQL orientado à documento Vamos falar um pouco sobre o mongoDB
  • 16. O FireDAC passa a suportar o mongoDB • Agora temos a paleta “FireDAC noSQL”, ou seja, ela tende a oferecer mais oportunidades no futuro • O mongoDB é o banco noSQL orientado à documento mais conceituado no momento • Apesar de visualizarmos JSON o mongoDB armazena no formato BSON • Tudo isso nos trás oportunidades incríveis! • Não ria do nome, mongo de humongous: gigantesco • https://www.mongodb.org/
  • 17. BSON? • BSON é como se fosse o JSON no formato binário Isso implica em menos bytes para representar as informações E maior velocidade de análise (parsing) Porém afeta a legibilidade e interoperabilidade • O Delphi, por conta do suporte ao mongoDB, oferece classes para trabalhar com BSON • É uma ótima opção para intercâmbio de dados entre programas Delphi (cliente e servidor)
  • 18. Assista à palestra do Alan Glei • O paradigma noSQL esta ai e não deve ser ignorado. • Temos 4 orientações: À chave e valor: REDIS À colunas: Cassandra À grafo: Neo4J À documento: mongoDB • Permita-se conhecer o noSQL! Será que você precisa realmente de um banco SQL? Será que parte do seu sistema não teria mais fluidez com noSQL?
  • 19. Aplicando tudo isto no Delphi System.JSON na prática
  • 20. uses System.JSON.* Namespace especializado para o tratamento de JSON, que foi ampliado, dando suporte ao “JSON extendido” (mongoDB) bem como implementa features do JSON.NET • System.JSON: Contêm várias classes, em especial as que representam o tipos JSON Substitui a unit Data.JSON • System.JSON.Readers: Leitores de estruturas JSON • System.JSON.Writers: Escritores de estruturas JSON • System.JSON.Builders: Construtores JSON • System.JSON.BSON: Dá suporte ao formato BSON • System.JSON.Utils: Possui a classe TJsonTextUtils que auxilia na formatação • System.JSON.Types: Tipos auxiliares diversos • System.JSONConsts: Resources Strings diversas • Também temos a REST.JSON com algumas facilidades bacanas.
  • 21. Diagrama simplificado – System.JSON TJSONAncestor TJSONPair TJSONValue TJSONTrue TJSONFalse TJSONString TJSONNullTJSONObjectTJSONArray TJSONNumber
  • 22. Exemplos práticos Vamos ver um pouco disso tudo funcionando!
  • 23. Baixe os exemplos depois se quiser, • https://github.com/jmarioguedes/EC2015_JSON.git
  • 24. Referências interessantes • Introdução ao JSON - Um guia para JSON que vai direto ao ponto Lindsay Bassett Editora Novatec - http://www.novatec.com.br/livros/introjson/ • JSON. De gambiarra a padrão Caio Gondim http://loopinfinito.com.br/2013/06/18/json-de-gambiarra-a-padrao/ • Sobre o JSON: http://json.org/json-pt.html • Sobre o BSON: http://bsonspec.org • MongoDB - Guia Rápido: https://mongodbwise.wordpress.com/2014/05/22/mongodb-guia-rapido/
  • 25. http://fb.com/DelphiBrasil http://fb.com/EmbarcaderoBR http://www.embarcadero.com/mvp-directory http://www.embarcaderobr.com.br/treinamentos/ { “nome” : “Mário Guedes” , “e-mail” : “mario.guedes@arrayof.com.br” , “blog” : “http://eugostododelphi.blogspot.com.br” , “perfis” : [ {“linkedin” : “jmarioguedes”} , {“slideshare” : “jmarioguedes”} , {“github” : “jmarioguedes”} , {“prezi” : “jmarioguedes”} ] }