Vous êtes sur la page 1sur 7

20/01/2015

BalaioTecnolgico:LendodadosJSONemaplicaesDelphi

19DEJULHODE2013

LendodadosJSONemaplicaesDelphi
OJavaScriptObjectNotationousimplesmenteJSONumformatopadropara
trocadeinformaesmuitousadonaconstruodesitesdevidosuaestrutura
baseadanoJavaScript.EssacaractersticadaosscriptsemumapginaHTMLa
flexibilidadepararecuperarinformaescomplexaseapliclasaoHTMLconformea
necessidade,incrementandoausabilidadedapgina.
AssimcomooXML,JSONumformatotextoaberto,isto,quepodeserextendido
paraacrescentarnovosvaloresquandoforpreciso;ambostambmsofceisde
seremlidosporhumanos.Asinformaesnesseformatosoconstrudascompares
nome/valor,sendosuportados3tiposbsicosdedados:texto(string),nmerose
booleanos.Osparesdevalores,noentanto,podemserrearranjadosparaconstruir
objetoscomplexoselistasdeobjetos(arrays).Oquadroaseguirmostraoexemplode
umobjetoJSONcomplexo:
/*ObjetoJSONcomplexo,incluindoumarraycom3outrosobjetos*/
{
http://balaiotecnologico.blogspot.com.br/2013/07/lendodadosjsonemaplicacoesdelphi.html

QUEMSOUEU

Bacharel em Cincias da
Computao, formado pela
Unesp Bauru. Foi responsvel
pelos mdulos da rea
industrial do ERP da ABC71
Solues em Informtica entre
1993 e 1998. Em 2002, passou
a ser responsvel pela ento
nascente rea de Pesquisa &
Lus
Desenvolvimento da empresa.
Gustavo
profissional certificado pela
Fabbro
Microsoft, com especializao
em arquitetura do Sistema
OperacionalWindows.
AssinarfeedRSS

PESQUISARNOBLOG

Pesquisar
1/7

20/01/2015

BalaioTecnolgico:LendodadosJSONemaplicaesDelphi

"empresa":"ABC71",
"ativa":true,
"fundacao":1971,
"empregados":[
{"nome":"Jose","sobrenome":"Silva"},
{"nome":"Beto","sobrenome":"Marinho"},
{"nome":"Jim","sobrenome":"Jones"}
]
}

Hdiversosserviosdisponveisnainternetalgunsgratuitoscomosquaispodemos
recuperardiferentestiposdeinformao(listadepases,previsodotempo,cotaes
demoedas,etc).Almdisso,possvelconstruirmosnossosprpriosserviospara
proverqualquertipodedadoquenecessitemos.Nestepost,eumostrocomo
aplicaesDelphipodemsebeneficiardeservioscomoesses,usandocomoexemplo
umdosserviospublicadosnositeGitHub.
Oretornodoserviopropostoumasriedeobjetosdescrevendocadapaisdo
mundo,incluindoseunome,umidnumricoeasiglade3letrasusadaparaopas.O
quadroabaixotrazcomoexemplooobjetoparaoBrasil:
{
"title":"Brazil",
"population":174468575,
"currency_code":"BRL",
"currency":"BrazilianReal",
"nationality_plural":"Brazilians",
"nationality_singular":"Brazilian",
"map_reference":"SouthAmerica",
"_id":33,
"country":"Brazil",
"fips104":"BR",
"iso2":"BR",
"iso3":"BRA",
"ison":76,
"internet":"BR",
"capital":"Brasilia"
}

SEGUIDORES
Participardestesite
GoogleFriendConnect

Membros(180) Mais

Jummembro?Fazerlogin

MARCADORES

.NET(15)
ADO(3)
Artigos(7)
C#(11)
C++Builder(39)
CAPICOM(6)
Componentes(7)
Conceitos(36)
Delphi(128)
DesignPatterns(41)
Excel(10)
Ferramentas(20)
HTML(23)
Indy(8)

Comosetratadeumserviooferecidonainternet,oprimeiropassoacessaro
http://balaiotecnologico.blogspot.com.br/2013/07/lendodadosjsonemaplicacoesdelphi.html

Internet(16)
2/7

20/01/2015

BalaioTecnolgico:LendodadosJSONemaplicaesDelphi

endereodoservioparaobterocontedodisponvel.Issopodeserconseguidocomo
componenteTIdHTTPdoIndy,conformedescritonopostTrabalhandocomHTTPem
Delphi.Paranossocenrio,issoseresumeaocdigodoquadroabaixo:
varJsonStream:TStringStream
begin
JsonStream:=TStringStream.Create('')
try
{JsonStreamconterosdadosJSONrequisitados:}
idHttp1.Get('https://raw.github.com/nosql/data
refine/master/data/json/countries.json',JsonStream)
TrataJsonStream(JsonStream)
finally
JsonStream.Free()
end

ApsachamadadafunoGet,avarivelJsonStreamcontmaestruturaJSON
completacomosdadosdospaises.Essasinformaesestoemformatotextomaso
Delphipossuiummecanismodeparseparacarreglosnumobjetoprprio,o
TJSONObject:
varjso:TJSONObject
jsop:TJSONPair
begin
jso:=TJsonObject.Create
jso.Parse(JsonStream.Bytes,0)
forjsopinjsodobegin
ifjsop.JsonString.Value='_id'then
pais.id:=((jsop.JsonValue)AsTJSONNumber).AsInt
else
ifjsop.JsonString.Value='iso3'then
pais.ISO3:=jsop.JsonValue.Value
else
ifjsop.JsonString.Value='country'then
pais.Pais:=jsop.JsonValue.Value
end
jso.Free
end

http://balaiotecnologico.blogspot.com.br/2013/07/lendodadosjsonemaplicacoesdelphi.html

Notcias(48)
Registry(5)
Script(22)
SQL(10)
Threads(7)
Windows(32)
XML(13)
POSTAGENSPOPULARES

ProblemascomunsaoconsumirWebServices
paraNFeemC#
Ok,jvenceuouestprestesavenceroprazo
paraqueumagrandepartedasempresas
utilizemobrigatoriamenteaNFeNotaFiscal
Eletrn...
LendodadosJSONemaplicaesDelphi
OJavaScriptObjectNotationou
simplesmenteJSONumformatopadro
paratrocadeinformaesmuitousadona
construodesitesdev...
TrabalhandocomThreadsemDelphi
exemplobsico
Nestepost,voudarsequnciaaopost
anteriorsobreThreadsemostrarumexemplo
bastantebsicodecomocriarumaaplicao
usandoThread...
Traandorotascomaverso3daAPIdo
GoogleMaps
Usaraverso3daAPIdoGoogleMapspara
traararotaentredoisendereosenvolve
basicamenteosmesmosprocedimentos
descritosnopost...
TrabalhandocomHTTPemDelphi
3/7

20/01/2015

BalaioTecnolgico:LendodadosJSONemaplicaesDelphi

UmTJSONObjectarmazenaalistadosparesnome/valorqueconstituemumobjeto
JSON.Comovemosnoquadroanterior,alistaumiteratorparavaloresdotipo
TJSONPair,comoqualpodemosextrairtantoonome(JasonString)quantoovalor
(JasonValue)decadapropriedadedoobjetoJSON.
Noentanto,humproblemacomocdigoacima.Mencioneiantesqueoservio
retornaumasriedeobjetosmasocdigomostradotrataapenasoprimeiroobjeto
recuperadonostream.Paratratarosdemais,temosqueconhecermelhorafuno
ParsedoobjetoJSON.
OprimeiroparmetrodafunoParseostreamobtidojuntoaoservionaweb.O
segundoparmetroindicaapartirdequalcaracteredostreamoParsedevecomear
seutrabalho.Afunoretornaaposiodostreamondealeituradoobjetocorrente
foiconcluda.Issotudonecessrioporquenosabemosdeantemootamanhode
cadaobjeto.Mas,comessasinformaesquetemos,podemosmontarumlaocapaz
delertodososobjetosincludosnostream,comofazocdigoaseguir:
vari:Int64
jso:TJSONObject
jsop:TJSONPair
begin
i:=0
repeat
jso:=TJsonObject.Create
i:=abs(jso.Parse(JsonStream.Bytes,i))
forjsopinjsodobegin
{TrataaquicadaJSONPair}
end
jso.Free
until(i>=JsonStream.Size)
end

OobjetoJSONusadonoexemplorelativamentesimples,nopossuindooutros
objetosaninhadosoumesmoumarraydevalores.Paraessescasos,olaoquetrataos
paresdevaloresdevetestarotipodovaloretratloapropriadamente,reconstituindo
http://balaiotecnologico.blogspot.com.br/2013/07/lendodadosjsonemaplicacoesdelphi.html

OprotocoloHTTPHyperTextTransfer
ProtocolouProtocolodeTransfernciade
Hipertexto)certamenteomaisutilizadona
internet....
FazendoDownloadeUploadusandoFTPcom
Delphi
OFTPumprotocolobastanteantigo,
anterioraoadventodainternetmas
largamenteusadonelaparatransfernciade
arquivosospopular...
FormatandoplanilhasExcelatravsde
programao
Jdescreviempostsanteriorescomo
automatizaraleituraeacriaodeplanilhas
Excel,bemcomofizumoverviewdos
principaisobjetos...
Trabalhandocomasfunesdeagregaodo
SQL
OSQLStructuredQueryLanguage
(LinguagemdeConsultaEstruturada)uma
linguagemusadaparadarmanutenonos
dadosemumbancosde...
ConvertendoobjetosDelphiparaoformato
JSON
Damosonomedeserializaoaoprocessode
pegarumobjetoemmemrianuma
linguagemdeprogramaoeconvertlopara
umformatopadro,...
EnviandoemailscomDelphiParteI
Oemailhbastantetempoumaferramenta
corriqueira,dasmaisusadasnessestempos
deinternet.Mas,autilidadedelenoest
restrita...

ARQUIVODOBLOG
4/7

20/01/2015

BalaioTecnolgico:LendodadosJSONemaplicaesDelphi

oobjetocomplexo.IssopodeserconseguidousandooClassNamedovalorouRTTI,
comoabaixo:
ifjsop.JsonValueIsTJSONObjectthen
TrataObjeto(jsop.JsonValueAsTJSONObject)
else
if>jsop.JsonValueIsTJSONArraythen
TrataArray(jsop.JsonValueAsTJSONArray)
elsebegin
{Tratavaloressimples}
end

2014(2)
2013(7)
Novembro(1)
Setembro(1)
Julho(1)
LendodadosJSONemaplicaesDelphi
Maio(1)
Abril(1)

AformacomotransporteiocontedodeumobjetoJSONparaumaestrutura
equivalentedoDelphiaquinestepostomtodomaissimples.ODelphidisponibiliza
mecanismosdeserializaodeinformaesusandoJSONquesobemmais
elaboradoseflexveis.Mostrotaismecanismosemoutroocasio.
MaisInformaes
JavaScript Object Notation,Trabalhando com HTTP em Delphi, JSON Tutorial, JSON
cominformaesdepasesnoGitHub
PostadoporLusGustavoFabbros14:36 Marcadores:Delphi,Indy,Internet

Maro(1)
Janeiro(1)
2012(21)
2011(43)
2010(66)
2009(120)

+3 Recomende isto no Google

Umcomentrio:
CarlosDaniel 7deagostode201316:49
Interessante artigo e quem trabalha com verses mais antigas do Delphi, como o
Delphi2007porexemplo,recomendousaraunituJSONdeFabioAlmeida,aquiestou
usandomuitobem.
Responder

http://balaiotecnologico.blogspot.com.br/2013/07/lendodadosjsonemaplicacoesdelphi.html

5/7

20/01/2015

BalaioTecnolgico:LendodadosJSONemaplicaesDelphi
LazybonesIn
R$28 R$26,60

Digiteseucomentrio...

InglsInstr
R$45 R$42,75

Comentarcomo:

Publicar

ContadoGoogle

Encontrada
R$27,90 R$26,60

Visualizar

SemEsperan
R$28 R$26,60

HomensMul
R$28 R$26,60

Bomdia,Tod
R$40 R$26,60

OBS:OscomentriosenviadosaesteBlogsosubmetidosamoderao.Porisso,elessero
publicadossomenteapsaprovao.

MilagresInv
R$28 R$26,60

OVerdadeiro
R$30 R$26,60

Postagemmaisrecente

Pginainicial

Assinar:Postarcomentrios(Atom)

Postagemmaisantiga
Apaixonados
R$28 R$26,60

AEvoluoD
R$28 R$26,60

http://balaiotecnologico.blogspot.com.br/2013/07/lendodadosjsonemaplicacoesdelphi.html

6/7

20/01/2015

BalaioTecnolgico:LendodadosJSONemaplicaesDelphi

TOTALDEVISITAS

5 5 4 8 8 2

TecnologiadoBlogger.

http://balaiotecnologico.blogspot.com.br/2013/07/lendodadosjsonemaplicacoesdelphi.html

7/7

Vous aimerez peut-être aussi