Bu örnekte, çok boyutlu karmaşık JSON isteğini JMSSerializerBundle kullanarak model classlar ile eşleştireceğiz. Verilerin serialiser kullanılarak modeller ile nasıl eşleştirildiklerini göstermeyeceğim, çünkü konuyla ilgili bu blogda çok örnek var bu nedenle diğer örneklere bakabilirsiniz.


Kurulum


Terminalde composer require jms/serializer-bundle komutunu çalıştırmayı unutmayın.


İstek


{
"schedules": {
"Monday": [
{
"minute": "05",
"hour": "13"
},
{
"minute": "05",
"hour": "14"
},
{
"minute": "05",
"hour": "15"
}
],
"Sunday": [
{
"minute": "05",
"hour": "13"
}
]
}
}

Model classları


Create


declare(strict_types=1);

namespace AppBundle\Model;

use JMS\Serializer\Annotation as Serializer;

class Create
{
/**
* @Serializer\Type("array<string, array<AppBundle\Model\Schedule>>")
*/
public $schedules;
}

Schedule


declare(strict_types=1);

namespace AppBundle\Model\FeedProvider;

use JMS\Serializer\Annotation as Serializer;

class Schedule
{
/**
* @Serializer\Type("string")
*/
public $minute;

/**
* @Serializer\Type("string")
*/
public $hour;
}

Sonuç


AppBundle\Model\Create Object
(
[schedules] => Array
(
[Monday] => Array
(
[0] => AppBundle\Model\Schedule Object
(
[minute] => 05
[hour] => 13
)
[1] => AppBundle\Model\Schedule Object
(
[minute] => 05
[hour] => 14
)
[2] => AppBundle\Model\Schedule Object
(
[minute] => 05
[hour] => 15
)
)
[Sunday] => Array
(
[0] => AppBundle\Model\Schedule Object
(
[minute] => 05
[hour] => 13
)
)
)
)