Delphi 10.3环境下如何将JSON数组读取并加载到Listbox中
Delphi 10.3 读取JSON数组到列表的实现方法
Delphi 10.3 自带System.JSON原生单元,无需引入第三方库即可完成JSON数组的解析工作,具体实现步骤如下:
前置依赖
在代码单元的uses段引入以下两个系统单元:
System.JSON:负责JSON内容的解析处理System.Generics.Collections:提供泛型列表TList<Integer>用来存储订单ID
核心实现代码
uses System.SysUtils, System.JSON, System.Generics.Collections; procedure LoadOrderIDsToList(const JSONResponseStr: string; AOrderIDList: TList<Integer>); var LJSONArray: TJSONArray; LJSONValue: TJSONValue; LOrderID: Integer; begin // 入参校验 if not Assigned(AOrderIDList) then Exit; AOrderIDList.Clear; // 解析API返回的JSON字符串为数组对象 LJSONArray := TJSONObject.ParseJSONValue(JSONResponseStr) as TJSONArray; try if not Assigned(LJSONArray) then Exit; // 遍历JSON数组所有元素,转换为整数后存入列表 for LJSONValue in LJSONArray do begin if TryStrToInt(LJSONValue.Value, LOrderID) then begin AOrderIDList.Add(LOrderID); end; end; finally *必须手动释放JSON对象资源,避免内存泄漏* LJSONArray.Free; end; end;
调用示例
procedure TForm1.Button1Click(Sender: TObject); var LOrderIDList: TList<Integer>; i: Integer; // 示例为API返回的JSON数组字符串,实际使用时替换为你的接口返回值 const API_RETURN_JSON = '[2258,2259,2260]'; begin LOrderIDList := TList<Integer>.Create; try // 调用解析方法 LoadOrderIDsToList(API_RETURN_JSON, LOrderIDList); // 遍历列表做后续业务处理 for i in LOrderIDList do begin // 此处替换为你的业务逻辑,示例为弹窗输出订单ID ShowMessage('当前订单ID:' + IntToStr(i)); end; finally // 释放列表资源 LOrderIDList.Free; end; end;
注意事项
- 如果接口返回的JSON数组元素是带双引号的字符串格式(例如
["2258","2259"]),上述转换逻辑可直接兼容,无需修改 - 若JSON数组存在null值,转换逻辑会自动跳过无效值,不会触发报错
- 以上逻辑仅适用纯数值/纯数值字符串组成的一维JSON数组,复杂结构JSON需要对应调整解析逻辑
内容的提问来源于stack exchange,提问作者nas ben
相关产品推荐
相关产品推荐

