godjarvis/conversion
Composer 安装命令:
composer require godjarvis/conversion
包简介
convert data single type to defined types by jsonSchema or others for response format
README 文档
README
type conversion for php response format
安装
composer require godjarvis/conversion
更新
composer update godjarvis/conversion
使用
包含3个类型解析器:PathAdapter, JsonSchemaAdapter, ObjectAdapter
用法
继承或实例化对应的解析器后,设置对应的目标格式到 $targetConversion 中,调用convert方法即可完成类型转换。例如:
各解析器示例
PathAdapter
直接定义字段和类型映射,例如存在以下json返回数据:
{
"name": "godjarvis",
"department": [
1,
2,
3
],
"mobile": "15900739964",
"extattr": {
"attrs": [
{
"name": "godjarvis",
"age": "36",
"male": 1
},
{
"name": "Bob",
"age": "17",
"male": 0
}
]
}
}
如果要求:
- department中整型转换为字符串
- 手机号转换为整型
- age字段转换为整型
- male字段转换为bool
转换处理伪代码如下:
class UserInfoConversion extends PathAdapter { public $targetConversion = [ 'department.*' => 'string', 'mobile' => 'integer', 'extattr.attrs.*.age' => 'int', 'extattr.attrs.*.male' => 'boolean', ]; } //转换处理 $newData = (new UserInfoConversion($oldData))->convert();
转换后效果:
{
"name": "godjarvis",
"department": [
"1",
"2",
"3"
],
"mobile": 15900739964,
"extattr": {
"attrs": [
{
"name": "godjarvis",
"age": 36,
"male": true
},
{
"name": "Bob",
"age": 17,
"male": false
}
]
}
}
JsonSchemaAdapter
使用标准的 jsonSchema 格式定义各字段类型,数据会按照定义的类型进行转换。
同样处理上面例子中 json 需求的伪代码如下:
//使用jsonSchema压缩后的json字符串 class UserInfoConversion extends JsonSchemaAdapter { public $targetConversion = '{"type":"object","properties":{"name":{"type":"string"},"department":{"type":"array","items":{"type":"string"}},"mobile":{"type":"number"},"extattr":{"type":"object","properties":{"attrs":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"age":{"type":"number"},"male":{"type":"boolean"}}}}}}}}'; } //或者使用jsonSchema格式的数组 class UserInfoConversion extends JsonSchemaAdapter { public $targetConversion = [ 'type' => 'object', 'properties' => [ ....... ], ........ ]; } //转换处理 $newData = (new UserInfoConversion($oldData))->convert();
ObjectAdapter
利用类属性在注释中定义的类型来控制返回的字段类型,上面例子中返回的数据可抽象出3个对象类如下:
class UserInfo { /** @var string */ public $name; /** @var string[] */ public $department; /** @var int */ public $mobile; /** @var ExtattrInfo */ public $extattr; } class ExtattrInfo { /** @var array<AttrInfo> */ public $attrs; } class AttrInfo { /** @var string */ public $name; /** @var int */ public $age; /** @var bool */ public $male; }
定义对应的转换器如下:
class UserInfoConversion extends ObjectAdapter { public $targetConversion = UserInfo::class; } //转换处理 $newData = (new UserInfoConversion($oldData))->convert();
godjarvis/conversion 适用场景与选型建议
godjarvis/conversion 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 9 次下载、GitHub Stars 达 0, 最近一次更新时间为 2025 年 08 月 04 日, 在 PHP 生态内属于活跃度较高的组件。
我们在过去多个企业项目中使用过 godjarvis/conversion 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 godjarvis/conversion 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
统计信息
- 总下载量: 9
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 16
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2025-08-04