簡體   English   中英

Symfony JsonResponse中的字段名稱格式錯誤

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM