PHP code example of zamaldev / json-model

1. Go to this page and download the library: Download zamaldev/json-model library. Choose the download type require.

2. Extract the ZIP file and open the index.php.

3. Add this code to the index.php.
    
        
<?php
require_once('vendor/autoload.php');

/* Start to develop here. Best regards https://php-download.com/ */

    

zamaldev / json-model example snippets


use Zamaldev\JsonModel\JsonModel;

key;

    public int $key2;
}

$parser = new JsonModel();

$data = '{"key":"value","key2":2}';

$model = $parser->parse($data, Model::class);

echo $model->key; // "value"
echo $model->key2; // 2

use Zamaldev\JsonModel\Attributes\Map;
use Zamaldev\JsonModel\JsonModel;

Map(name: 'key2')]
    public int $int;
}

$parser = new JsonModel();

$data = '{"key":"value","key2":2}';

$model = $parser->parse($data, Model::class);

echo $model->string; // "value"
echo $model->int; // 2

use Zamaldev\JsonModel\Attributes\AsArray;
use Zamaldev\JsonModel\JsonModel;



    #[AsArray(itemType: 'int')] // or 'integer'
    public array $key2;

    #[AsArray(itemType: SubModel::class)]
    public array $key3;

    #[AsArray(itemType: 'int', level: 4)]
    public array $key4;
}

class SubModel {
    public string $obj_key;
}

$parser = new JsonModel();

$data = '{"key":["value"],"key2":[1,2],"key3":[{"obj_key":"obj_val"}],"key4":[[[[3]]]]}';

$model = $parser->parse($data, Model::class);

echo $model->key[0]; // "value"
echo $model->key2[0]; // 1
echo $model->key2[1]; // 2
echo $model->key3[0]->obj_key; // "obj_val"
echo $model->key4[0][0][0][0]; // 3

use Zamaldev\JsonModel\Attributes\Caster;
use Zamaldev\JsonModel\JsonModel;
use Zamaldev\JsonModel\JsonModelInterface;

rface $jsonModel, mixed $value): mixed
    {
        // Here will be your logic.
        if (is_array($value)) {
            return $value;
        }
        if (is_object($value)) {
            return $jsonModel->parse($value, Model::class);
        }

        return (string) $value;
    }
}

class Model {
    #[CustomCaster]
    public self|string|array $result;
}

$parser = new JsonModel();

$data = '{"result":["value"]}';

$model = $parser->parse($data, Model::class);
echo $model->result[0]; // "value"

$data = '{"result":"error"}';

$model = $parser->parse($data, Model::class);
echo $model->result; // "error"

$data = '{"result":{"result":"ok"}}';

$model = $parser->parse($data, Model::class);
echo $model->result->result; // "ok"

use Zamaldev\JsonModel\Attributes\SimpleSanitizer;
use Zamaldev\JsonModel\JsonModel;

  #[SimpleSanitizer('ucfirst')]
    public string $result;
}

$parser = new JsonModel();

$data = '{"result":"   vAlUe   "}';

$model = $parser->parse($data, Model::class);
echo $model->result; // "Value"

use Zamaldev\JsonModel\JsonGenerator;

ey3":{"obj_key":"obj_val"},"key4":[[[[{"num": true, "key3":{"obj_key": "obj_val"}}]]]],"key5":[1,"a"]}';

(new JsonGenerator())
    ->namespace('Demo')
    ->rootModel('Demo')
    ->rootPath(__DIR__)
    ->strictTypes(true)
    ->generate($data);

// Demo.php


declare(strict_types=1);

namespace Demo;

use Zamaldev\JsonModel\Attributes\AsArray;
use Zamaldev\JsonModel\Attributes\Map;

class Demo
{
    /**
     * @var ?string $key
     */
    public ?string $key = null;

    /**
     * @var ?int $_key2
     */
    #[Map('-_key2')]
    public ?int $_key2 = null;

    /**
     * @var ?DemoKey3 $key3
     */
    public ?DemoKey3 $key3 = null;

    /**
     * @var array<array<array<array<DemoKey4>>>> $key4
     */
    #[AsArray(itemType: DemoKey4::class, level: 4)]
    public array $key4 = [];

    /**
     * @var array<mixed> $key5
     */
    #[AsArray(itemType: 'mixed')]
    public array $key5 = [];
}

// DemoKey3.php


declare(strict_types=1);

namespace Demo;

class DemoKey3
{
    /**
     * @var ?string $obj_key
     */
    public ?string $obj_key = null;
}

// DemoKey4.php


declare(strict_types=1);

namespace Demo;

class DemoKey4
{
    /**
     * @var ?bool $num
     */
    public ?bool $num = null;

    /**
     * @var ?DemoKey31 $key3
     */
    public ?DemoKey31 $key3 = null;
}

// DemoKey31.php


declare(strict_types=1);

namespace Demo;

class DemoKey31
{
    /**
     * @var ?string $obj_key
     */
    public ?string $obj_key = null;
}