jurasciix/objeckson

There is no license information available for the latest version (1.0.5) of this package.

Installs: 36

Dependents: 0

Suggesters: 0

Security: 0

Stars: 1

Watchers: 1

Forks: 0

Open Issues: 0

pkg:composer/jurasciix/objeckson

1.0.5 2025-11-05 09:27 UTC

This package is auto-updated.

Last update: 2025-12-05 11:07:24 UTC


README

Objeckson - это библиотека для отображения динамических ассоциативных структур (которые, как правило, хранятся в формате JSON) на объекты PHP.

Возможности и roadmap

  • Десериализовывать массивы
  • Отображать на перечисления
  • Анализировать обобщенные типы
  • Работать с nullable-типами
  • Пользовательские сеттеры
  • Анализировать array-shapes: array{foo: Foo, bar: Bar}
  • Значения по умолчанию для Readonly свойств
  • Отображать на объекты STD: DateTime, SplFixedArray, etc...
  • Комбинации прямо отображаемых типов (примитивных): string|int|Foo
  • OneOf

Установка

Требования:

  • PHP ≥ 8.1
  • Composer

Установка посредством composer:

composer require jurasciix/objeckson:^1.0

Быстрый туториал

Следующий код демонстрирует инициализацию объекта, предоставляющего доступ к функциям Objeckson, и десериализацию данных JSON с отображением на объект PHP:

use jurasciix\objeckson\JsonProperty;
use jurasciix\objeckson\Optional;
use jurasciix\objeckson\Objeckson;

#[JsonProperty]
class APIResponse {
    #[Optional]
    public ?APIError $error = null;
    #[Optional]
    public mixed $data = null;
}

#[JsonProperty]
class APIError {
    public int $code;
    public string $description;
}

$responseJSON = <<<JSON
{
    "error": {
        "code": 1,
        "description": "Error description"
    }
}
JSON;

// Инициализируем главный объект 
$objeckson = new Objeckson();

// Десериализовываем и отображаем данные на объект типа APIResponse.
$response = $objeckson->fromJson($responseJSON, APIResponse::class);

// Смотрим, что у нас вышло.
var_dump($response);