MVCBr – TInterfacedJSON – Descobrindo recursos invisíveis #2

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;
    begin

    AJson := ‘{ "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;
    begin

    LJson := 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]

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *