monsieurbon/json-serializer

轻量级的PHP JSON序列化器

v1.5.0 2019-03-21 06:46 UTC

This package is auto-updated.

Last update: 2024-09-21 20:41:16 UTC


README

Build Status codecov Sonarcloud Status

轻量级的PHP JSON序列化器

安装

composer require monsieurbon/json-serializer

使用

$serializer = new JsonSerializer();
$serializer->configure('path/to/some/config.yml');

$json = $serializer->serialize($myObject);
$myObject = $serializer->deserialize($json, MyClass::class);
$myObject = $serializer->deserialize($json, function ($dataArray) {
    return 'My\ClassName\From\DataArray';
});

配置

您可以使用yaml格式的配置文件

NameSpace\Of\MyObject:
  arrayProperty: 'array'
  booleanProperty: 'boolean'
  dateProperty:
    type: 'date'
    dateFormat: 'Y-m-d\TH:i:s\Z'
  floatProperty: 'float'
  integerProperty: 'integer'
  stringProperty: 'string'
  nestedObject: 'NameSpace\Of\MyNestedObject'
  factoryObject:
    type: 'NameSpace\Of\FactoryObject'
    factoryMethod: 'fromData'
NameSpace\Of\MyNestedObject:
  dateProperty: 'date'

类型 date 支持可选的 dateFormat 属性。默认为 d-m-Y H:i:s\Z。对于嵌套对象,您可以定义一个静态工厂方法,该方法将使用数据调用以创建对象。

如果您想指定对象将序列化的数据,请实现标准的 php \JsonSerializable 接口。

依赖项

以下PHP扩展是必需的

  • ext-yaml
  • ext-json

此包仅处理(反)序列化的反射部分,并依赖于PHP json扩展进行实际的(反)序列化。