我刚刚开始使用 Silex 来帮助我构建一个从 MySQL 数据库返回数据的 Restful API。以前在使用 php 和 mysql 时,我注意到 MySQL 会在我的文件中将整数作为字符串返回json_encode()
功能。它会在我的所有整数值周围加上引号。我能够解决这个问题的唯一方法就是通过JSON_NUMERIC_CHECK
进入json_encode
功能:
return json_encode($array, JSON_NUMERIC_CHECK);
非常适合我需要的东西。现在我正在使用 silex,我一直在使用它的内置 json 函数从我的控制器返回值。我注意到我遇到了同样的问题,整数作为带有引号的字符串返回。
$app->get('/suppliers', function () use ($app) {
$sql = "SELECT * FROM suppliers";
$suppliers = $app['db']->fetchAll($sql);
return $app->json(array('suppliers' => $suppliers));
});
供应商有一个supplier_id
字段是一个整数,但它在 json 数据中作为字符串返回。我尝试通过JSON_NUMERIC_CHECK
进入$app->json()
在我的数组之后运行,但会得到一个InvalidArguementException
.
我确实弄清楚了而不是使用$app->json()
我可以使用的功能json_encode()
php 函数就可以工作了。就像这样:
$app->get('/suppliers', function () use ($app) {
$sql = "SELECT * FROM suppliers";
$suppliers = $app['db']->fetchAll($sql);
//return $app->json(array('suppliers' => $suppliers));
return json_encode(array('suppliers' => $suppliers), JSON_NUMERIC_CHECK);
});
有什么理由不这样做而不是使用 silex$app->json()
功能?有更好的方法吗?