PHPackages                             jurasciix/objeckson - 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. jurasciix/objeckson

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

jurasciix/objeckson
===================

1.0.5(6mo ago)147PHPPHP ^8.1

Since Apr 25Pushed 3mo ago1 watchersCompare

[ Source](https://github.com/JuraSciix/Objeckson)[ Packagist](https://packagist.org/packages/jurasciix/objeckson)[ RSS](/packages/jurasciix-objeckson/feed)WikiDiscussions master Synced 1mo ago

READMEChangelog (7)Dependencies (3)Versions (11)Used By (0)

Objeckson
=========

[](#objeckson)

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

**Библиотека устарела и больше не поддерживается. Рекомендуется рассмотреть замену: [JuraSciix/PhpDataMapper](https://github.com/JuraSciix/PhpDataMapper)**

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

[](#возможности-и-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 =
