Marco Salles
Delphi & Programao & Lgica
O Pessoal da humanas que esta curioso para conhecer este tal de Json , confesso que no iro manter contato
e mesmo se decpcionar . Para o pessoal das exatas digo que Json no um cara , Json o cara . Do acrnimo
de Java Script Object Notation caracterisa-se pelo formato simples para a troca de dados entre aplicaes
heterogneas . Ganhou notoriedade devido ao seu emprego em AJAX , mas ganhou adeptos alm das
fronteiras do Java Scripts e foi adotado por grandes empresas e possui implementao em diversas linguagens
de programao . A troca de informaes entres sistemas at a alguns anos atrs utilizava-se os arquivos txt ,
posicionais ou separados por delimitadores evoluindo ao Xml e onde o Json apresenta como uma forma mais
simples de alcanar bons resultados Na segunda parte deste despretensioso artigo faremos a converso de um
Objeto do Delphi em Notao Json , e um Objeto Json transformado em um Objeto do Delphi , ou seja o
processo inverso, respectivamente estamos falando de Marshal e UnMarshal. Vamos definir a classe que
definira o Objeto a ser transformado
1
2
3
4
5
6
7
8
9
10
11
1
2
3
4
5
Type
TPessoa = class
strict private
FNome:String;
FIdade:integer;
FEstadoCivil:Boolean;
public
property Nome:String read FNome write FNome;
property Idade:integer read FIdade write FIdade;
property EstadoCivil:Boolean read FEstadoCivil write FEstadoCivil;
end;
uses
DBXJSon , DBXJsonReflect;
var
objValueJson:TJSONValue;
vamos colocar Dois edits ( edtNome , edtIdade ) um RadioGrupoBox (rdgEstadoCivil ) dois Buttons
(btnObjectToJson , btnJsonToObject) e um Memo (MemResult) no formulrio Agora no evento onclick do
btnObjctToJson vamos escrever o cdigo
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
http://marcosalles.wordpress.com/2011/05/04/232/
1/4
24/4/2014
18
19
20
21
22
23
24
25
MemResult.Lines.text:=FobjValueJson.ToString;
finally
M.Free;
end;
finally
pessoa.Free;
end;
end;
O Cdigo acima , instncia um objeto TPessoa e o converte em objeto do Tipo Json. Ainda exibe a notao do
Objeto Json em formato texto no Memresult . Nosso prximo objetivo fazer a operao inversa , isto
de posse do objeto FobjValueJson , iremos converte-lo no objeto do tipo Tpessoa . Para isto vamos
programar o evento onclick do button btnJsonToobject com o seguinte cdigo
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
perceba que comentamos a linha if assigned(FobjValueJson) then . Pois internamente a classe testa se
FobjValueJson uma instancia vlida , evitando erros de AV ( Acessos Violados ) caso FobjValueJson for nil
por exemplo
O pessoal das exatas deve estar perguntando ( o das humanas ja deve ter fechado este post h muito tempo )
para que tudo isto ??? Agora possvel passar uma instncia de um objeto transformado em TJSONValue por
exemplo ( de um processo de cliente ) para um servidor como parmetro de entrada ou sada e receber de volta
Seguir
um TJSONValue como um parmetro de sada e o recuperamos
para o Objecto correspondente.
No Json temos padres abertos de comunicao entre vrios servios da web , em outras palavras temos
Obtenha todo post novo
2/4
24/4/2014
De qualquer forma cada caso um caso e merece uma anlise especfica a fim de comparamos o custo x
Cadastre-me
benefcio entre os dois processos . Mais detalhes entre esses dois comparativos pode ser obtido em
http://www.json.org/xml.html
Tecnologia WordPress.com
Para finalizar tentamos mostrar neste artigo os mtodos Marshal e UnMarshal que facilita muito o trfego
de objetos via notao Json . Qualquer dvida crtica ou sugesto estarei a disposio para eventuais contato
no mais meu muito obrigado
Veja a parte I desse artigo : Muito Prazer eu me chamo JSON parte I no lonk
http://marcosalles.wordpress.com/2011/05/03/muito-prazer-eu-me-chamo-json/
Atualizao ***** 15/07/2011
Neste mesmo blog tem um um artigo onde se aplica na prtica com DataSnap a Serializao/DesSerializao
de Objetos a fim que possam serem trafegados na Web e Comitados na Aplicao Servidora. Segue o Link
http://marcosalles.wordpress.com/2011/07/14/json-applyupdate-aplicacao-de-atualizacoes-para-mais-deum-clientdataset-em-uma-unica-transacao-com-datasnap-parte-ii/
About these ads
Imprimir
Gosto
Be the first to like this.
Relacionado
Sobre marcosalles
Delphiano de Corao Desenvolvo FreeLancer e presto Consultoria Orientao Online DataSnap DbX ClientDataSet , POO ,
Padres de Projeto e dvidas de Delphi em Geral
Ver todas as mensagens por marcosalles
http://marcosalles.wordpress.com/2011/05/04/232/
3/4
24/4/2014
Marco Salles
O tema Twenty Ten.
http://marcosalles.wordpress.com/2011/05/04/232/
Blog no WordPress.com.
4/4