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

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

Передаю такую строку в контроллер
{"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 может преобразовывать типы данных.
Но массив это массив, а объект это объект. В цикле вы только перебираете полученное.
Вы либо создадите объект и наполните его полученным массивом. Либо более изящное решение вам подскажут.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы
Goodt Екатеринбург
от 100 000 до 150 000 ₽
Selecty Москва
До 350 000 ₽
Data World Москва
от 180 000 до 210 000 ₽