For Json:
{
"employees":[
{"firstName":"John", "lastName":"Doe"},
{"firstName":"Anna", "lastName":"Smith"},
{"firstName":"Peter", "lastName":"Jones"}
]
}
Data Classes are:
-
EmployeesData
<php
namespace App\Data\Employees;
use Spatie\LaravelData\Data;
use Spatie\LaravelData\Attributes\DataCollectionOf;
use Spatie\LaravelData\DataCollection;
class EmployeesData extends Data
{
public function __construct(
/** @var DatCollection */
#[DataCollectionOf(Employees_employeesData::class)]
public DataCollection $employees,
) {}
}
-
Employees_employeesData
<?php
namespace App\Data\Employees;
use Spatie\LaravelData\Data;
class Employees_employeesData extends Data
{
public function __construct(
public ?string $firstName = null,
public ?string $lastName = null,
) {}
}
Usage:
use App\Data\Employees\EmployeesData;
$employeesJson = '{
"employees":[
{"firstName":"John", "lastName":"Doe"},
{"firstName":"Anna", "lastName":"Smith"},
{"firstName":"Peter", "lastName":"Jones"}
]
}';
/*Json to Laravel data classes */
$employeesData = EmployeesData::from(json_decode($employeesJson));
/*Again convert to Json*/
$sameJson = $employeesData->toJson();