[英]Malformed field names in Symfony JsonResponse
我對Symfony的JsonResponse
有一個奇怪的問題,我似乎無法弄清楚。 我在控制器中執行以下操作:
public function loadTemplateAction($id)
{
$repository = $this->getDoctrine()->getRepository('AppBundle:Host');
$template = $repository->find($id);
return new JsonResponse((array)$template);
}
應該通過傳遞的ID在我的存儲庫中找到給定的模板。 我想在ajax調用中使用返回的數據。 它可以實現我想要的功能,但是似乎在所有字段名稱前都加上星號。 因此它返回如下響應:
我不知道為什么將這些星號放在字段名稱的前面(它們在我的數據源中顯然沒有這樣命名)。 是否有人知道什么可能導致這種行為?
首先,請參閱http://php.net/manual/en/language.types.array.php :
如果將對象轉換為數組,則結果是一個數組,其元素是對象的屬性。 鍵是成員變量名稱,但有一些值得注意的例外:整數屬性不可訪問; 私有變量的類名在變量名之前; 受保護的變量在變量名前帶有“ *” 。 這些前置值的任一側都有空字節。 這可能會導致一些意外的行為:
您可能不應該只是將對象類型轉換為數組,並對其進行JSON編碼。 看一下現有的一些序列化解決方案:
http://symfony.com/doc/current/cookbook/serializer.html
http://jmsyst.com/libs/serializer
這些庫可以很好地控制如何將對象序列化為不同的格式,包括JSON。
如果您對對象如何序列化為JSON的控制較少,則可以實現JsonSerializable接口。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.