簡體   English   中英

symfony / FOSRestBundle:空的JSON響應(使用symfony體現的序列化程序)

[英]symfony/FOSRestBundle : empty JSON response (using the symfony embodied serializer)

我正在學習使用symfony構建API(使用FOSRestBundle)。 我正在學習法語教程。 顯然,我首先嘗試自己編寫代碼,但即使使用復制/粘貼,當我向相應的路徑(rest-api.local / places)發出GET請求時,它仍然會讓我獲得空的JSON數組。

如果我“格式化”php數組中的代碼,代碼工作正常:

  public function getPlacesAction(Request $request)
{
    $places = $this->get('doctrine.orm.entity_manager')
            ->getRepository('AppBundle:Place')
            ->findAll();
    /* @var $places Place[] */

    $formatted = [];
    foreach ($places as $place) {
        $formatted[] = [
           'id' => $place->getId(),
           'name' => $place->getName(),
           'address' => $place->getAddress(),
        ];
    }

    return new JsonResponse($formatted);
}

但后來我嘗試直接序列化$ places,使用fost Rest的視圖處理程序(在config.yml中)

fos_rest:
routing_loader:
    include_format: false
view:
    view_response_listener: true
format_listener:
    rules:
        - { path: '^/', priorities: ['json'], fallback_format: 'json' }

並將我的控制器中的功能更改為以下代碼,我得到了我的JSON響應,但“{[],[],[]}”之間沒有任何內容(我的數據庫中有3個條目):

 public function getPlacesAction(Request $request)
{
    $places = $this->get('doctrine.orm.entity_manager')
            ->getRepository('AppBundle:Place')
            ->findAll();
    /* @var $places Place[] */

    return $places;
}

這是我關於stackoverflow的第一篇文章,所以我希望我的問題很清楚,祝你有愉快的一天。

在我的app/config/services.yml我添加了這個:

services:
    object_normalizer:
        class: Symfony\Component\Serializer\Normalizer\GetSetMethodNormalizer
        # Important! Tag this service or it wouldn't work
        tags:
            - { name: serializer.normalizer }

我仍然無法理解為什么它有效但突然間我有一個很好的json作為回應。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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