Delphi中从TRESTResponse的JSON列表提取tenantName到ComboBox的方法
在Delphi中解析JSON并将tenantName填充到ComboBox的实现方法
Delphi自带的System.JSON单元即可完成该需求,无需依赖第三方库,以下是具体实现步骤和代码示例:
实现步骤
- 确保项目引用
System.JSON单元; - 解析目标JSON字符串为
TJSONArray对象; - 遍历数组内的每个
TJSONObject,提取tenantName字段值; - 将提取到的名称逐一添加到ComboBox控件中。
完整代码示例
假设你有一个触发加载逻辑的TButton(btnLoadTenants)和目标TComboBox(cbxTenants),可在按钮点击事件中编写如下代码:
uses System.JSON, System.SysUtils; procedure TForm1.btnLoadTenantsClick(Sender: TObject); var JSONStr: string; JSONArray: TJSONArray; JSONObj: TJSONObject; I: Integer; TenantName: string; begin // 此处可替换为你的JSON数据来源(如接口返回、本地文件读取内容) JSONStr := '[ { "id": "e1eede29-f875-4a5d-8470-17f6a29a88b1", "tenantId": "70784a63-d24b-46a9-a4db-0e70a274b056", "tenantType": "ORGANISATION", "tenantName": "Maple Florist" }, { "id": "32587c85-a9b3-4306-ac30-b416e8f2c841", "tenantId": "e0da6937-de07-4a14-adee-37abfac298ce", "tenantType": "ORGANISATION", "tenantName": "Adam Demo Company (NZ)" }, { "id": "74305bf3-12e0-45e2-8dc8-e3ec73e3b1f9", "tenantId": "c3d5e782-2153-4cda-bdb4-cec791ceb90d", "tenantType": "PRACTICEMANAGER", "tenantName": "Geographe Steelworks" }]'; try // 清空ComboBox原有内容 cbxTenants.Clear; // 解析JSON字符串为数组对象 JSONArray := TJSONArray.ParseJSONValue(JSONStr) as TJSONArray; if Assigned(JSONArray) then try // 遍历数组中的每个JSON对象 for I := 0 to JSONArray.Count - 1 do begin JSONObj := JSONArray.Items[I] as TJSONObject; if Assigned(JSONObj) then begin // 安全提取tenantName字段,为空时使用默认空字符串 TenantName := JSONObj.GetValue<string>('tenantName', ''); if TenantName <> '' then cbxTenants.Items.Add(TenantName); end; end; finally JSONArray.Free; // 释放JSON对象,避免内存泄漏 end; except on E: Exception do ShowMessage('JSON解析出错:' + E.Message); end; end;
关键说明
TJSONArray.ParseJSONValue用于将字符串解析为JSON对象,需做好类型转换和非空判断;GetValue<string>方法可安全提取字符串字段,第二个参数为字段不存在时的默认值;- 必须手动释放创建的JSON对象,防止内存泄漏;
- 添加异常捕获可避免程序因JSON格式错误直接崩溃。
内容的提问来源于stack exchange,提问作者Paul Coshott
相关产品推荐
相关产品推荐

