使用json响应从symfony操作返回json数据

时间:2013-04-28 22:11:24

标签: php json symfony

我无法从控制器操作中返回正确的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'}
]}

1 个答案:

答案 0 :(得分:1)

我不知道为什么但是在我之后我就可以做到这样的事情:

$data = array('data' => $jobOrders);
$serializedJobOrders = $serializer->serialize($data, 'json');
// then just use the setContent() method again
return $jsonResponse->setContent($serializedJobOrders);

我真的不知道为什么在我花时间问这个问题之后就打了它,doh:)

我想知道使用setContent()方法是否不安全。看起来它有点“原始”。