【问题标题】:Symfony 4 - JsonResponse returns a non-empty object as emptySymfony 4 - JsonResponse 返回一个非空对象为空
【发布时间】:2022-01-05 10:29:14
【问题描述】:

我正在尝试在 Symfony 中返回 API 请求的结果(使用 Postman)。

这是我的相关控制器代码:

/**
 * @Route("/apis/login", name="api_login")
 */
public function login(Request $request, UserRepository $userRepository): Response
{
    $cin = json_decode($request->getContent(),true)["cin"];
    $password = json_decode($request->getContent(),true)["password"];
    $user = $userRepository->findOneBy(['cin'=>$cin, 'password'=>$password]);
    if($user!=null){
        return new JsonResponse(json_encode($user));
    }else{
        return new JsonResponse("false");
    }
}

这是请求正文:

但是,这就是我得到的结果:

在我的代码中,如果我将这一行 return new JsonResponse(json_encode($user)); 更改为这一行 return new JsonResponse(serialize($user)); ,我会得到:

这证明返回的对象不为空。知道如何解决这个问题吗?

【问题讨论】:

  • 你不需要编码参数,将参数作为数组传递。比如 JsonResponse(['id'=>$user->getId()])
  • 好主意!我已经修好了。

标签: api object request symfony4 jsonresponse


【解决方案1】:

我已经解决了!我刚刚将用户对象转换为数组。所以,我已经像这样更改了我的代码:

 /**
 * @Route("/apis/login", name="api_login")
 */
public function login(Request $request, UserRepository $userRepository): Response
{
    $cin = json_decode($request->getContent(),true)["cin"];
    $password = json_decode($request->getContent(),true)["password"];
    $user = $userRepository->findOneBy(['cin'=>$cin, 'password'=>$password]);
    if($user!=null){
        $arr = (array) $user;
        foreach($arr as $k=>$v){
            $newkey = substr($k,17);
            $arr[$newkey] = $arr[$k];
            unset($arr[$k]);
        }
        return new JsonResponse($arr);
    }else{
        return new JsonResponse("false");
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-08-25
    • 2021-03-31
    • 2014-07-15
    • 2018-08-25
    • 2020-10-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多