我无法从控制器操作中返回正确的json。
现在,我正在使用jms序列化程序来序列化一个实体。像这样:
$serializedJobOrders = $serializer->serialize($jobOrders, 'json');
所以我想要返回一串json。它实际上是一个json对象数组:[{},{},{}]
之前,我刚刚在响应中使用了setContent()方法来返回json。像这样:
$jsonResponse = new JsonResponse();
return $jsonResponse->setContent($serializer->serialize($jobOrders, 'json'));
但是,返回json数组存在安全问题。它应该是一个包含数组的对象。像{data:[{},{},{}]}之类的东西。这就是我遇到麻烦的地方。
我不能这样做:
return new JsonResponse(array('data' => $serializedJobOrders));
因为这只会为“数据”创建一个转义字符串。属性。然后我必须在客户端解析它。我认为这不是正确的做法。为了说明一点,这就是它的样子:
{data:" [{\ u0022name \ u0022:\ u0022John \ u0022},{\ u0022name \ u0022:\ u0022John \ u0022}]"}
如何返回正确的json?所以它看起来像这样:
{data: [
{'name': 'john'},
{'name': 'john'},
{'name': 'john'}
]}
答案 0 :(得分:1)
我不知道为什么但是在我之后我就可以做到这样的事情:
$data = array('data' => $jobOrders);
$serializedJobOrders = $serializer->serialize($data, 'json');
// then just use the setContent() method again
return $jsonResponse->setContent($serializedJobOrders);
我真的不知道为什么在我花时间问这个问题之后就打了它,doh:)
我想知道使用setContent()方法是否不安全。看起来它有点“原始”。