flashport/laravel-json-marshaller

A laravel wrapper for the lib flashport/json-marshaller

v0.12.5 2025-03-13 12:16 UTC

This package is auto-updated.

Last update: 2025-07-13 13:13:09 UTC


README

A laravel wrapper for the json-marshaller lib.

Installation:

    composer require flashport/laravel-json-marshaller

Usage:

There are two main ways of using this lib, it is possible to use existing target cast objects without modifying them, modifying only the model which performs the cast.

Option 1: Directly on the model

On the $casts array, specify the JsonMarshallable::class and the target class after :. This will ensure the target class gets passed as an argument to the Marshaller.

/**
 * The attributes that should be cast.
 *
 * @var array<string, string>
 */
protected $casts = [
    'metadata'      => JsonMarshallable::class . ":" . Metadata::class,
    'customFields'  => JsonMarshallable::class . ":" . CustomField::class,
    'active'        => 'bool',
];

Option 2: On the target classes

Target class:

Make sure to extend the AsJsonMarshallable class on your target classes.

use LaravelJsonMarshaller\Castables\AsJsonMarshallable;

class CustomField extends AsJsonMarshallable
{
    //...
}

Model:

On the model, specify only the target class name you want to cast into.

/**
 * The attributes that should be cast.
 *
 * @var array<string, string>
 */
protected $casts = [
    'metadata'      => Metadata::class,
    'customFields'  => CustomField::class,
    'active'        => 'bool',
];