PHPackages                             godjarvis/conversion - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. godjarvis/conversion

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

godjarvis/conversion
====================

convert data single type to defined types by jsonSchema or others for response format

v1.0.6(11mo ago)09MITPHPPHP ^7.3

Since Aug 5Pushed 11mo agoCompare

[ Source](https://github.com/GodJarvis/conversion)[ Packagist](https://packagist.org/packages/godjarvis/conversion)[ RSS](/packages/godjarvis-conversion/feed)WikiDiscussions main Synced today

READMEChangelog (1)DependenciesVersions (8)Used By (0)

conversion
==========

[](#conversion)

type conversion for php response format

**安装**
------

[](#安装)

```
composer require godjarvis/conversion
```

**更新**
------

[](#更新)

```
composer update godjarvis/conversion
```

**使用**
------

[](#使用)

包含3个类型解析器：PathAdapter, JsonSchemaAdapter, ObjectAdapter

### 用法

[](#用法)

继承或实例化对应的解析器后，设置对应的目标格式到 `$targetConversion` 中，调用convert方法即可完成类型转换。例如：

### 各解析器示例

[](#各解析器示例)

#### PathAdapter

[](#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

[](#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

[](#objectadapter)

利用类属性在注释中定义的类型来控制返回的字段类型，上面例子中返回的数据可抽象出3个对象类如下：

```
class UserInfo
{
    /** @var string */
    public $name;
    /** @var string[] */
    public $department;
    /** @var int */
    public $mobile;
    /** @var ExtattrInfo */
    public $extattr;
}

class ExtattrInfo
{
    /** @var array */
    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();
```

###  Health Score

26

—

LowBetter than 41% of packages

Maintenance52

Moderate activity, may be stable

Popularity4

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity36

Early-stage or recently created project

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~0 days

Total

7

Last Release

331d ago

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/49481518?v=4)[godjarvis](/maintainers/godjarvis)[@GodJarvis](https://github.com/GodJarvis)

---

Top Contributors

[![GodJarvis](https://avatars.githubusercontent.com/u/49481518?v=4)](https://github.com/GodJarvis "GodJarvis (1 commits)")

### Embed Badge

![Health badge](/badges/godjarvis-conversion/health.svg)

```
[![Health](https://phpackages.com/badges/godjarvis-conversion/health.svg)](https://phpackages.com/packages/godjarvis-conversion)
```

###  Alternatives

[torann/currency

This provides Laravel with currency functions such as currency formatting and conversion using up-to-date exchange rates.

4031.1M6](/packages/torann-currency)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
