Я использую пакет JMS Serializer для сериализации объектов Symfony в json. Все работает нормально, пока я не начну использовать аннотацию MaxDepth, чтобы избежать глубокой рекурсии.
У меня есть сущность под названием «Категория», в которой есть «Подкатегории». Если я не использую аннотацию MaxDepth при сериализации, она отлично работает и генерирует объект json, как и должно быть, с полным деревом подкатегорий:
{
"id": 1,
"name": "Category 1",
"subcategories": [{
"id": 3,
"name": "Category 1-1",
"subcategories": [{
"id": 7,
"name": "Category 1-1-1",
"subcategories": []
}]
}, {
"id": 4,
"name": "Category 1-2",
"subcategories": []
}]
}
Я хотел бы сериализовать только первый уровень подкатегорий, поэтому я попытался настроить свою сущность следующим образом:
class Category
{
....
/**
* @ORM\OneToMany(targetEntity="Category", mappedBy="parentCategory")
* @MaxDepth(1)
*/
private $subcategories;
....
}
Но по какой-то причине я не понимаю, когда включаю проверки maxdepth, используя следующий код:
$serializedObj = $jms->serialize($obj, 'json', SerializationContext::create()->enableMaxDepthChecks());
Я получаю этот странный результат (подкатегория не закодирована, но он знает, что их две):
{
"id": 1,
"name": "Categoria 1",
"subcategories": [{}, {}]
}
Есть идеи о том, что происходит?
Спасибо!
MaxDepth
не работает (да, у меняserializerEnableMaxDepthChecks=true
). - person Lord Zed   schedule 17.11.2015@MaxDepth
на классе дыр ?? - person famas23   schedule 06.07.2018