JsonToDelphi:高效将 JSON 转换为 Delphi 类定义
在现代软件开发中,与 REST API 交互是绝大多数 Delphi 项目的核心需求。然而,面对复杂的 JSON 响应,开发者往往需要花费大量时间手动定义 TObject 类、配置 JSON 映射属性,并反复核对字段名称。一旦 API 结构发生变化,手动维护这些类定义将成为一场噩梦。
JsonToDelphi 正是为了解决这一痛点而生的开源工具。它能够将任何 JSON 字符串快速转换为符合 Delphi 语法规范的类定义,极大地简化了数据模型构建的过程。
🚀 项目核心功能
JsonToDelphi 不仅仅是一个简单的字符串替换工具,它通过分析 JSON 的结构,自动生成一套完整的 Delphi 类体系:
- 自动推断类型:能够识别 JSON 中的数字、字符串、布尔值以及 Null 值,并将其映射为 Delphi 的
Integer,Double,String,Boolean等类型。 - 处理嵌套结构:当 JSON 包含嵌套对象(Object)或对象数组(Array of Objects)时,工具会自动创建相应的子类,并建立层级引用关系。
- 支持多种 JSON 库:生成的代码旨在与主流的 JSON 解析库(如
System.JSON或第三方库)无缝配合。 - 快速迭代:当 API 接口更新时,只需将新的 JSON 响应粘贴进工具,几秒钟内即可生成最新的类定义,无需手动修改。
🛠️ 快速上手实例
假设你正在调用一个天气预报 API,返回的 JSON 数据如下:
1. 输入的 JSON 数据
{
"city": "Beijing",
"coordinates": {
"lat": 39.9042,
"lon": 116.4074
},
"weather": [
{
"main": "Clear",
"temp": 22.5,
"humidity": 40
},
{
"main": "Cloudy",
"temp": 18.0,
"humidity": 60
}
],
"is_active": true
}
2. JsonToDelphi 生成的 Delphi 代码
通过该工具处理后,你将获得类似下面的类定义(简化版):
type
TCoordinates = class
private
FLat: Double;
FLon: Double;
published
property Lat: Double read FLat write FLat;
property Lon: Double read FLon write FLon;
end;
TWeather = class
private
FMain: string;
FTemp: Double;
FHumidity: Integer;
published
property Main: string read FMain write FMain;
property Temp: Double read FTemp write FTemp;
property Humidity: Integer read FHumidity write FHumidity;
end;
TWeatherResponse = class
private
FCity: string;
FCoordinates: TCoordinates;
FWeather: TArray<TWeather>;
FIsActive: Boolean;
published
property City: string read FCity write FCity;
property Coordinates: TCoordinates read FCoordinates write FCoordinates;
property Weather: TArray<TWeather> read FWeather write FWeather;
property IsActive: Boolean read FIsActive write FIsActive;
end;
💡 实际应用场景与工作流
场景:对接第三方支付接口
当你需要对接一个包含几十个字段的支付回调 JSON 时,手动编写类定义极易出错(例如将 amount 写成 Integer 而非 Double)。
推荐工作流:
1. 获取样本:使用 Postman 或浏览器获取一次真实的 API 响应 JSON。
2. 转换生成:将 JSON 粘贴到 JsonToDelphi 中,生成类定义代码。
3. 集成代码:将生成的类放入你的 Model 单元中。
4. 反序列化:结合 REST.Json 单元的 TJson.JsonToObject<T> 方法,一行代码完成转换:
var
Response: TWeatherResponse;
begin
Response := TJson.JsonToObject<TWeatherResponse>(JsonString);
try
ShowMessage(Response.City + ' 的温度是: ' + Response.Weather[0].Temp.ToString);
finally
Response.Free;
end;
end;
🌟 为什么选择 JsonToDelphi?
| 维度 | 手动编写 | 使用 JsonToDelphi |
|---|---|---|
| 开发速度 | 慢,需逐个字段对照 | 极快,秒级生成 |
| 准确率 | 容易出现拼写错误或类型误判 | 严格基于 JSON 结构生成 |
| 维护成本 | API 变更需手动全局搜索修改 | 重新生成类定义即可 |
| 心理压力 | 面对 500 行 JSON 时感到绝望 | 无论 JSON 多大,处理时间一致 |
📦 安装与获取
该项目在 GitHub 上开源,你可以直接克隆或下载其源代码进行自定义扩展。
- 项目地址:https://github.com/marlonnardi/JsonToDelphi
- 适用人群:所有使用 Delphi 开发且需要处理 JSON 数据的工程师。
通过将重复性的“体力活”交给工具,你可以将更多精力集中在业务逻辑的实现上,真正提升开发效率。




还没有评论,来说两句吧...