随笔 - 2146  文章 - 19 评论 - 11846 阅读 - 1267万


macrolen 给了这样一些数据, 说是用淘宝的 API 获取的 JSON 数据, 让我帮助解析:


把这些数据保存在: c:\temp\json.txt; 然后在窗体上放一个 Memo 和四个 Button ...
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Memo1: TMemo;
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Button4: TButton;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

uses SuperObject;
var jo: ISuperObject;

//载入并建立对象
procedure TForm1.FormCreate(Sender: TObject);
const
  JsonPath = 'c:\temp\json.txt';
begin
  Assert(FileExists(JsonPath), '文件不存在');
  with TStringList.Create do
  begin
    LoadFromFile('c:\temp\json.txt');
    jo := SO(Text);
    Free;
  end;
end;

//按格式查看所有
procedure TForm1.Button1Click(Sender: TObject);
begin
  Memo1.Text := jo.AsJSon(True, False);
end;

//查看: items_search_response.item_search.item_categories
procedure TForm1.Button2Click(Sender: TObject);
begin
  Memo1.Text := jo['items_search_response.item_search.item_categories'].AsJSon(True, False);
end;

//查看: items_search_response.item_search.items
procedure TForm1.Button3Click(Sender: TObject);
begin
  Memo1.Text := jo['items_search_response.item_search.items'].AsJSon(True, False);
end;

//遍历 items_search_response.item_search.items.item 数组中的指定元素
procedure TForm1.Button4Click(Sender: TObject);
var
  ja: TSuperArray;
  i: Integer;
begin
  ja := jo['items_search_response.item_search.items.item'].AsArray;
  Memo1.Clear;
  for i := 0 to ja.Length - 1 do
  begin
    Memo1.Lines.Add(ja.O[i].Format('%cid%; %location.state%; %location.city%'));
  end;
end;

end.


另外 SuperObject 当前的最新版本是: SuperObjectv1.2.3, 还没有测试它新增的功能, 不过我这个是用它做的.

posted on   万一  阅读(13610)  评论(16编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
历史上的今天:
2009-01-18 Delphi 与 DirectX 之 DelphiX(74): TDIB.EncryptDecrypt();
2009-01-18 Delphi 与 DirectX 之 DelphiX(73): TDIB.Darker()、Lighter();
2009-01-18 Delphi 与 DirectX 之 DelphiX(72): TDIB.SephiaEffect();
2009-01-18 Delphi 与 DirectX 之 DelphiX(71): TDIB.Negative;
2009-01-18 Delphi 与 DirectX 之 DelphiX(70): TDIB.Mirror();
2009-01-18 Delphi 与 DirectX 之 DelphiX(69): TDIB.Greyscale();
2008-01-18 理解 Delphi 的类(十二) - 深入属性[1] - 先复习


点击右上角即可分享
微信分享提示