Académique Documents
Professionnel Documents
Culture Documents
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)
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