Delphi에서 ISuperObject를 사용하여 Json 데이터의 구현 코드 해석

자바, Php 등 언어에는 모두 성숙한 프레임워크가 있어 Json 데이터를 해석할 수 있다. 우리는 아주 적은 코드를 사용하여 포맷된 json 데이터를 프로그램이 식별할 수 있는 대상이나 속성으로 변환할 수 있고델피에도 이러한 구성 요소가 있어 이 기능, 즉 IsuperObject를 실현할 수 있다.만약 이 구성 요소가 아직 없다면 인터넷에서 검색하여 다운로드하거나 아래 메시지에 메일박스를 남겨 본인에게 요구하세요.
다음은 ISuper Object에서 자주 사용하는 함수 몇 가지를 말씀드릴게요.
function SO(const s: SOString = ‘{}'): ISuperObject; overload; 이 함수는 json 데이터 문자열에 전송되고 ISuper Object 대상을 되돌려줍니다. 이것은 일반적으로 우리가 json을 해석할 때 사용하는 첫 번째 함수입니다. 예를 들어 jObj: = SO (jsonstr) 입니다.
property O[const path: SOString]: ISuperObject read GetO write PutO; default; jobj.O['username'], 이 함수는 ISuperObject 대상에 호출됩니다. 괄호 안의 문자열은 json의 필드 이름이고 ISuperObject 대상을 되돌려줍니다.
property S[const path: SOString]: SOString read GetS write PutS; 이 함수는 ISuperObject 대상에 호출됩니다. O['username']와 달리 SoString, 즉 문자열을 되돌려줍니다. 사용 방법str: = jObj.S[‘username']; 같은 이치로 또 다른 몇 가지 유사한 함수가 있다. 예를 들어 I['age']는 정수를 되돌려주고, B['isenable']는 부울형을 되돌려주고, A['users']는 TSuperArray 그룹을 되돌려준다.
AssString, AsBoolean, AsInteger, AsArray, ISuperObject의 함수로 ISuperObject를 해당하는 데이터 형식으로 변환하는 데 사용됩니다.
다음은 시범 코드를 보겠습니다. json 데이터는 다음과 같습니다.

{
  "retcode": "1", 
  "datafrom": "server",
  "users": "[{\"id\":1, \"username\": \"liuderu\", \"website\": \"bcoder.com\"},{\"id\":2, \"username\": \"Jeoe\", \"website\": \"baidu.com\"}]"
}
Delphi 버전 2010, 코드는 다음과 같습니다.

unit uFmMain;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, StdCtrls, ComCtrls, Buttons, superobject;

type
 TFmMain = class(TForm)
  Memo1: TMemo;
  ListView1: TListView;
  BitBtn1: TBitBtn;
  Label1: TLabel;
  procedure BitBtn1Click(Sender: TObject);
 private
  { Private declarations }
 public
  { Public declarations }
 end;

var
 FmMain: TFmMain;

implementation

{$R *.dfm}

procedure TFmMain.BitBtn1Click(Sender: TObject);
var
 jRet, jUsers: ISuperObject;
 aryUsers: TSuperArray;
 retCode: integer;
 strUsers: string;
 i: integer;
begin
 jRet := SO(Memo1.Text);
 if (jRet.O['retcode'] <> nil) then begin
  retCode := jRet.O['retcode'].AsInteger;
  Label1.Caption := ' :' + IntToStr(retCode) + ';  :' + jRet.O['datafrom'].AsString;

  if(jRet.O['retcode'].AsInteger = 1) then begin
   strUsers := jRet.O['users'].AsString;
   jUsers := SO(strUsers);
   aryUsers := jUsers.AsArray;
   for I := 0 to aryUsers.Length - 1 do begin
    with ListView1.Items.Add do begin
     Caption := aryUsers[i].O['id'].AsString;
     SubItems.Add(aryUsers[i].O['username'].AsString);
     SubItems.Add(aryUsers[i].O['website'].AsString);
    end;
   end;
  end;
 end;
end;

end.
간단한 Delphi가 ISuperObject를 사용하여 json을 해석하는 예:Delphi_Json_jb51.rar

좋은 웹페이지 즐겨찾기