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;
}