Java, PHP e outras linguagens possuem estruturas maduras para análise de dados Json, o que nos permite usar muito pouco código para converter dados JSON formatados em objetos ou atributos que podem ser reconhecidos pelo programa. componentes no Delphi Implemente esta funcionalidade, ou seja, IsuperObject. Se você ainda não possui este componente, pesquise e baixe-o online ou deixe seu e-mail na caixa de mensagem abaixo para solicitá-lo.
Vamos primeiro falar sobre algumas funções comumente usadas em ISuperObject.
function SO(const s: SOString = '{}'): ISuperObject sobrecarga; Esta função passa a string de dados json e retorna um objeto ISuperObject. (jsonstr).
propriedade O[const path: SOString]: ISuperObject read GetO write PutO por exemplo: jobj.O['username'], esta função é chamada por um objeto ISuperObject, a string entre colchetes é o nome do campo em json, retornou um objeto ISuperObject.
propriedade S[const path: SOString]: SOString read GetS write PutS; Esta função é chamada por um objeto ISuperObject Diferente de O['username'], ela retorna um SoString, ou seja, uma string. jObj.S['nomedeusuário']; Da mesma forma, existem várias outras funções semelhantes, como I['age'] retorna um número inteiro, B['isenable'] retorna um tipo booleano e A['users'] retorna um array TSuperArray.
As funções AsString, AsBoolean, AsInteger, AsArray, ISuperObject são usadas para converter ISuperObject no tipo de dados correspondente.
Vejamos um código de demonstração abaixo, os dados json são os seguintes
{ "retcode": "1", "datafrom": "servidor", "usuários": "[{/"id/":1, /"nomedeusuário/": /"liuderu/", /"website/": /"bcoder.com/"},{/"id/":2, /"username/": /"Jeoe/", /"website/": /"baidu.com/"}]"}Delphi versão 2010, o código é o seguinte:
unidade uFmMain; faz interface com Windows, Mensagens, SysUtils, Variantes, Classes, Gráficos, Controles, Formulários, Diálogos, StdCtrls, ComCtrls, Botões, superobjeto; tipo TFmMain = class(TForm) Memo1: TMemo; : procedimento TLabel; BitBtn1Click(Sender: TObject); private { Declarações privadas } public { Declarações públicas } end;var FmMain: TFmMain;implementação{$R *.dfm}procedimento TFmMain.BitBtn1Click(Sender: TObject);var jRet, jUsers: ISuperObject; : TSuperArray; retCode: inteiro; strUsers: string; i: inteiro;begin jRet := SO(Memo1.Text); if (jRet.O['retcode'] <> nil) então comece retCode := jRet.O['retcode'].AsInteger; .Caption := 'Valor de retorno:' + IntToStr(retCode) + '; jRet.O['datafrom'].AsString; if(jRet.O['retcode'].AsInteger = 1) então comece strUsers := jRet.O['users'].AsString; aryUsers := jUsers.AsArray para I := 0 para aryUsers.Length - 1 comece com ListView1.Items.Add começa a legenda:= aryUsers[i].O['id'].AsString(aryUsers[i].O['username'].SubItems.Add(aryUsers[i); ].O['site'].AsString); fim; fim; fim;fim.Um exemplo simples de Delphi usando ISuperObject para analisar json: Delphi_Json_jb51.rar