Depois do XML, JSON é a mais produtiva ferramenta para trocar de informações entre diferentes objetos ou diferentes plataformas.
base
JSON é uma notação para estrutura Chave/Valor criada originalmente em JavaScript. Comparativamente ao XML, JSON é mais compacto e totalmente transparente em objetos JavaScript o que o popularizou como a estrutura mais adequada de troca de informações entre servidor e cliente.
elementar meu caro
Quando um objeto possui um estrutura de dados e se deseja enviar ou converter em outra classe ou objeto, o JSON deve ser a primeira opção para facilitar a troca de dados entre os atores da operação.
Usar uma interface tem como foco delegar ao aplicativo decidir o momento adequado para retirar a instância da memória, não precisando se preocupar com o FREE do objeto implementando algo mais próximo de um coletor de lixo existente e outras linguagens.
como usar
TInterfacedJSON representa uma implementação da interface IJSONObject para um objeto TJSONObject.
-
Unit: System.JSON.Helper;
Gerando o IJSONObject para o dado:
[code]
uses System.JSON.Helper;
procedure TForm84.FormCreate(Sender: TObject);
var
AJson, ANome: string;
LJson: IJsonObject;
ACliente: Integer;
beginAJson := ‘{ "cliente":1,"nome":"jose de maria" }’;
LJson := TInterfacedJSON.new(AJson);
with LJson.JsonObject do
begin
/// pegando nome do cliente
ANome := s(‘nome’);
ACliente := I(‘cliente’);
end;// adicionando novo key/value
LJson.addPair(‘fone’:’9999-9999′);//….
end;
[/code] -
Unit: Data.DB.Helper
Trocando informações entre um JSON e um TDataset:
[code]
procedure TForm84.Button1Click(Sender: TObject);
var LJson:IJSONObject;
beginLJson := TInterfacedJSON.new;
LJson.addPair(‘cliente’,1);
LJson.addPair(‘nome’,’jose de maria’);FDMemTable1.open;
FDMemTable1.edit;// carrega os fields com o valor do JSON
// se o JSON for um ARRAY será carrega cada posição no array como uma nova linha na tabela.
FDMemTable1.FromJsonObject(LJson.JsonObject,True);FDMemTable1.post;
end;
[/code]Para obter um JSON do TDataset:
[code]
// gera um array para todas as linhas
FDMemTable1.ToJson;// gera o JSON somente para a linha corrente
FDMemTable1.Fields.ToJson;[/code]
-
Unit: System.Classes.Helper;
Lidando JSON com Objetos:
[code]
// gera um JSON de um objeto
MeuObjeto.ToJson;// carregando o objecto com os valor de um JSON
MeuObjeto.FromJson( … );[/code]