我正在使用JMS序列化程序包來將Symfony實體序列化爲json。 一切工作正常,直到我開始使用MaxDepth註釋來避免深度遞歸。Symfony 2.7 + JMS串行器+ 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(2)嗎? –
我一直在遇到同樣的問題。我瘋了,因爲'MaxDepth'註解不起作用(是的,我有'serializerEnableMaxDepthChecks = true')。 –
Lexxx有權利。在子實體中,您必須設置Groups,就像您在setGroups()參數中傳遞一樣(在controller方法中) –