symfony中JsonResponse处理findAll数据集和编码

在symfony中JsonResponse是一个生成Json响应的便捷方式。但是当我们将findAll查询出来的结果放入到JsonResponse时,他输出的Json数据居然为空。

什么情况?呢

其实是我们的entity类的属性为私有化的问题。解决起来也很简单,就是修改我们相关的entity类:

核心就是实现JsonSerializable的jsonSerialize()方法,返回需要的属性为一个数组。

我们在controller中测试一下:

其中有一行

$response->setEncodingOptions(JSON_UNESCAPED_UNICODE);

此句话是用来处理JSON 编码,如果没有此句,你输出的Json数据很可能出现如下状况:

{\u0022id\u0022:1,\u0022iam\u0022:1

setEncodingOptions相关参数请查看:http://php.net/manual/zh/json.constants.php

发表评论