Задать вопрос

Почему принимается как массив, а не как объект?

Передаю такую строку в контроллер
{"data":[{"n1":10,"n10":100,"n2":20,"n3":30,"n4":40,"n5":50,"n6":60,"n7":70,"n8":80,"n9":90,"s1":"aaa","s2":"bbb"},{"n1":101,"n10":1001,"n2":201,"n3":301,"n4":401,"n5":501,"n6":601,"n7":701,"n8":801,"n9":901,"s1":"ccc","s2":"ddd"},{"n1":102,"n10":100,"n2":202,"n3":30,"n4":402,"n5":50,"n6":60,"n7":70,"n8":80,"n9":90,"s1":"eee","s2":"fff"}],"baseclass":"Custom","classlibrary":"claass","comment":"","controlcount":0,"height":17,"helpcontextid":0,"left":0,"name":"Myarray","nsize":3,"parentclass":"Custom","picture":"","tag":"","top":0,"whatsthishelpid":-1,"width":100}

Сам контроллер
/**
   * @param ParamFetcher $paramFetcher Paramfetcher
     *
     * @RequestParam(name="data", nullable=false, strict=true, description="Data.", array=true)
     *
     * @return View
     */
    public function postDocsAction(ParamFetcher $paramFetcher)
      $data       = $paramFetcher->get('data');
        $logger     = $this->get('logger');
        $i=0;
        foreach ($data as $key => $d) {
            $i++;
            $logger->info($key.'=='.gettype($d));
        }

gettype($d) - массив , а не объект
  • Вопрос задан
  • 285 просмотров
Подписаться 1 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 2
Я в Symfony не специалист, конечно, но судя по array=true в DocBlock - указано, что json_decode должен возвращать массив, а не объект.
Ответ написан
А что вы сделали, что бы он был объектом ?
Массив идет пара + значение. PHP может преобразовывать типы данных.
Но массив это массив, а объект это объект. В цикле вы только перебираете полученное.
Вы либо создадите объект и наполните его полученным массивом. Либо более изящное решение вам подскажут.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы