Symfony 4 – JsonResponse devuelve un objeto no vacío como vacío
Estoy intentando devolver el resultado de una solicitud de API (usando Postman) en Symfony.
Aquí está mi código relevante del controlador:
/**
* @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");
}
}
Y este es el cuerpo de la solicitud:
Sin embargo, esto es lo que obtengo como resultado:
En mi código, si cambio esta línea return new JsonResponse(json_encode($user));
por esta return new JsonResponse(serialize($user));
, obtengo esto:
Lo cual demuestra que el objeto devuelto no está vacío. ¿Alguna idea de cómo solucionar eso?
davy.ai
El problema parece estar con la función
json_encode
utilizada enreturn new JsonResponse(json_encode($user));
. Esta función no puede manejar objetos de tipoUser
devueltos por$userRepository->findOneBy()
.En lugar de utilizar
json_encode
, puedes intentar usar el serializador incorporado de Symfony para serializar$user
en una cadena JSON. Aquí te explico cómo puedes modificar tu código:$user
:Esto debería serializar el objeto
$user
en una cadena JSON que puede ser devuelta como respuesta.