unit Unit1;
interface
uses
System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.ScrollBox,
FMX.Memo, FMX.Edit, FMX.StdCtrls, FMX.Controls.Presentation, system.json,
IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient, IdHTTP;
type
TForm1 = class(TForm)
Panel1: TPanel;
Button1: TButton;
Edit1: TEdit;
Memo1: TMemo;
IdHTTP1: TIdHTTP;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.fmx}
type
TProcessJSONString = TProc<TJSONString>;
procedure TForm1.Button1Click(Sender: TObject);
procedure DoJSONObject(o: TJSONObject; Process: TProcessJSONString); forward;
procedure DoJSONArray(o: TJSONArray; Process: TProcessJSONString);
var
i: integer;
v: TJSONValue;
begin
for i := 0 to o.Size - 1 do
begin
v := o.Get(i);
if v is TJSONObject then
DoJSONObject(v as TJSONObject, Process);
end;
end;
procedure DoJSONObject(o: TJSONObject; Process: TProcessJSONString);
var
i: integer;
p: TJSONPair;
begin
for i := 0 to o.Size - 1 do
begin
p := o.Get(i);
Process(p.JsonString);
if p.JsonValue is TJSONObject then
DoJSONObject(p.JsonValue as TJSONObject, Process)
else if p.JsonValue is TJSONArray then
DoJSONArray(p.JsonValue as TJSONArray, Process)
else if p.JsonValue is TJSONString then
Process(p.JsonValue as TJSONString);
end;
end;
var
o: TJSONObject;
begin
o := TJSONObject.ParseJSONValue(IdHTTP1.Get(Edit1.Text)) as TJSONObject;
try
DoJSONObject(o,
procedure(o: TJSONString)
begin
memo1.Lines.Add(o.ToString);
end);
finally
o.Free;
end;
end;
end.
json解析
最新推荐文章于 2024-03-13 19:02:26 发布